我的git repo中有一些符号链接,我从两台机器(比如A和B)处理。两者都运行Linux,但是B运行通过VirtualBox,文件系统是从Win7主机系统共享的。因此,B不支持符号链接。
在B上做一些工作时,我意识到在我的情况下使用符号链接是一个坏主意。所以在B上我复制了所有目标,以便它们覆盖“符号链接”。然后我承诺,把它推到我的中央仓库,然后把它拉到A上。
问题在于A,其中文件现在具有符号链接的权限,但具有文件的内容。例如。如果原始文件是包含“Lorem ipsum dolor sit amet ...”的文本文件,则A上的符号链接现在指向无意义的路径'Lorem ipsum dolor sit amet ...'并且其上的所有文件操作都将失败。
示例(首先,foo.png是../bar.png的符号链接,两者都在回购中):
user@B> cat foo.png
../bar.png
user@B> cp ../bar.png ./foo.png
user@B> git add foo.png
user@B> git commit -m "Removed symlink"
user@B> git push
...
user@A> git pull
user@A> ls -l foo.png
lrwxrwxrwx 1 user user 8 2012-06-22 15:13 foo.png -> ?PNG????
user@A> git status foo.png
# On branch master
# Changes not staged for commit:
# (use "git add <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# modified: foo.png
#
我无法想办法从文件中删除符号链接标志,或者以正常文件结帐,我希望有人可以提供帮助。
答案 0 :(得分:1)
如果其他人有这个问题,我发现快速而肮脏(而且显而易见)的解决方案是:
当您暂存要提交的文件时,它们将标记为
user@A> git status .
# [...]
# typechange: foo.png