为什么Git没有检测到重命名?

时间:2016-10-15 11:59:28

标签: git

阅读我发现使用git mv进行重命名应该让Git能够检测到重命名,但在我的Git(2.7.4)中它似乎不起作用。

这是我跑的:

 ~ $ mkdir git_tests
 ~ $ cd git_tests/
 ~/git_tests $ git init
Inizializzato un repository Git in /home/git_tests/.git/
 ~/git_tests $ echo "hello" > readme
 ~/git_tests $ git add readme 
 ~/git_tests $ git status
Sul branch master

Commit iniziale

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   readme

 ~/git_tests $ git mv readme leggimi
 ~/git_tests $ git status
Sul branch master

Commit iniziale

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)

    new file:   leggimi

有什么东西我不见了吗?

2 个答案:

答案 0 :(得分:4)

作为其他答案的补充:使用git mv并不能帮助Git检测重命名。 Git会在事后使用启发式方法检测它们,因此使用git mv old newgit rm --cached old; mv old new; git add new执行同样的操作。

(好吧,如果你在old中有未分级的更改,也就是说,如果跟踪的文件已经更改未在索引中暂存,那么git mv old new将保持跟踪文件并保持未分级在git add new将暂存所有内容时,未分阶段更改。

答案 1 :(得分:2)

因为您尚未提交该文件。如果文件已经被跟踪,git仅对重命名/文件移动的处理方式不同 - 在这种情况下,它不是,所以它仍将它视为新文件。

无论在这种情况下移动/重命名,readme / leggimi仍然是git的新的未跟踪文件,因此它将被视为这样。