我在这里看到了一些git-with-symlinks的问题,但是我仍然对这个问题感到困惑。
假设我已经将目录添加到git存储库,然后使用具有相同名称的符号链接替换目录。文件“仍然存在”,因为它们仍然具有通过符号链接的相同路径。但是,由于git不遵循链接,因此表面上忘记/删除了文件。但是,当我运行“git status”时,没有提到这一点。
在我意识到通过运行“git diff”来删除文件被删除之前,我很高兴地想到没有错。
因此,我有两个问题:文件是否有理由在“git status”中显示为已删除或移动?另外,如何重新添加文件?
对于那些不确定我在说什么的人,请考虑这个例子:
$ git init
$ mkdir path
$ touch path/file
$ git add path
$ git commit -a -m "added file"
则...
$ git status
# On branch master
nothing to commit (working directory clean)
则...
$ mv path path2
$ ln -s path2 path
$ git status
# On branch master
# Untracked files:
# (use "git add ..." to include in what will be committed)
#
# path
# path2/
nothing added to commit but untracked files present (use "git add" to track)
...然而
$ git diff
diff --git a/path/file b/path/file
deleted file mode 100644
index e69de29..0000000
谢谢! 汤姆
答案 0 :(得分:1)
我说这显然是一个错误。据推测,status
使用的机制与diff
不同,因此它不小心看到path/file
没有变化,也没有意识到它在链接后面。它处理目录 - >常规文件更改很好,如果符号链接不指向包含相应文件的目录,也可以正常工作,所以这只是这种特殊情况。接得好!您可能希望将其报告给git邮件列表(git@vger.kernel.org),
答案 1 :(得分:0)
您使用的是哪个版本的git,我使用的是1.7.0.4,我无法复制您的错误,通过我的测试显示原始文件是一个typechange并且新文件是新文件。