我有一个混帐回购协议测试和文件(zsh的配置文件),并Git和固网在Linux
ln ~/.zshrc test/zshrc
后来我改变.zshrc文件,在混帐回购协议的zshrc文件不改变,是git不能处理硬链接?
如果是这样,我怎么可以使用git来管理这些点文件?任何建议
我有一个混帐回购协议测试和文件(zsh的配置文件),并Git和固网在Linux
ln ~/.zshrc test/zshrc
后来我改变.zshrc文件,在混帐回购协议的zshrc文件不改变,是git不能处理硬链接?
如果是这样,我怎么可以使用git来管理这些点文件?任何建议
你不能在git仓库之外创建硬链接。你有几种选择:
~/.zshrc
到my-home-git-checkout/zshrc
的符号链接。¹呀,好吧,狡辩:你不能保持。
的Git总是假定他是一个文件的inode的唯一所有者。 因此,git checkout只是打破所有硬链接。
它并不完全分解它,它只是不记录哪些文件共享一个inode。然而,git记录的是,这两个(至少在某个时间点)具有相同的内容并优化存储。 – 2011-12-31 05:11:05
尝试添加下面的脚本到/path/to/repo/.git/hooks/post-checkout
(该文件必须是可执行的):
#!/bin/sh
/bin/ln -sf /path/to/repo/zshrc $HOME/.zshrc
你为什么不使用符号链接? – 2011-12-29 08:10:06
当然,如果这些文件有不同的内容,那么它们就不会被硬链接在一起。有些东西打破了这个联系。它可能是混帐(当你改变分支或什么的时候)或其他的东西,我不知道。您可以使用'ls -li'来检查inode号码或两个文件,以验证它们是否被硬链接。用它来找出文件在什么时候断开链接。 – Celada 2011-12-29 08:10:37