不能硬链接的gitconfig文件(Can't Hard Link the gitconfi

2019-09-20 17:44发布

我试图创建一个Git仓库来存储所有我点文件和配置文件。 我的想法是简单地创建硬链接到所有我关心的文件,并存储在自己的目录这些链接,我可以变成一个存储库。

我已经打了一个有点障碍的,虽然我的〜/的.gitconfig文件。 似乎每当我运行“混帐配置”命令,我创建不再指向正确的位置如在档案库中文件的链接不再更新正确。

下面是使用shell和交互式红宝石确定链接状态文件的例子。

# Create the link
$ ln .gitconfig .conf_files/gitconfig  # Create the link

# The files are in fact linked
[1] pry(main)> File.identical?('.gitconfig', '.conf_files/gitconfig')
=> true

# Update the gitconfig file by running a 'git config' command
$ git config --global alias.last 'log -1 HEAD'

# The files are no longer linked.
[2] pry(main)> File.identical?('.gitconfig', '.conf_files/gitconfig')
=> false

我认为这事做与Git是写的.gitconfig文件的方式。 没有人知道为什么会发生这种事,还是有解决方法的任何创造性的想法?

Answer 1:

尝试礼Barzilay在他的评论溶液中http://www.xxeo.com/archives/2010/02/16/dotfiles-in-git-finally-did-it.html :

所以,我终于找到了一个解决方案,将两个最好的:把回购的子目录,而不是符号链接,添加配置选项“core.worktree”是你的home目录。 现在,当你在你的home目录是你不是在混帐回购协议(所以第一个问题是消失了),而且你并不需要处理脆弱的符号链接在第二种情况下。 你仍然有排除你不想版本(在“git的/信息/排除”绝招例如,“*”)路径的次要麻烦,但是这并不新鲜。



Answer 2:

这是完全正常的,实际上是在覆盖配置文件的推荐方式。 Git的创建一个临时文件,写入了配置,然后移动覆盖旧的新文件。 这样一来,你没有得到一个不完整的配置文件(数据丢失)如果混帐被中断。

你总是可以编写一个脚本复制或您的配置文件链接到你的中央存储库。



Answer 3:

结帐这个答案,也许它可能会有所帮助:

https://stackoverflow.com/a/3731139/1431696

在此期间,你有没有考虑做反向链接? 创建库充满的配置文件等,然后在你实际使用您的文件,创建一个硬链接到“真实”的文件,它位于信息库中的位置。



Answer 4:

由于迪特里希埃普的回答和建议,我决定通过创建我的文件系统的根库,并使用的.gitignore只跟踪我感兴趣的文件,从不同的角度解决这个问题。

我的.gitignore文件现在看起来是这样的:

/*

!/etc/
/etc/*

# etc files
!/etc/rc.conf
!/etc/asound.conf
!/etc/mercurial/

!/home/
!/home/matt/
/home/matt/*

# Home files
!/home/matt/.xinitrc
!/home/matt/.gitconfig
!/home/matt/.bashrc

# Vim files
!/home/matt/.vimrc
!/home/matt/.vim/
.netrwhist

除了没有将文件复制分开,并让他们在两个不同的位置,这具有我需要我可以轻松地恢复更改,而不必手动复制文件以及受益。

感谢您的帮助家伙!



文章来源: Can't Hard Link the gitconfig File