阅读我发现使用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
有什么东西我不见了吗?
答案 0 :(得分:4)
作为其他答案的补充:使用git mv
并不能帮助Git检测重命名。 Git会在事后使用启发式方法检测它们,因此使用git mv old new
或git rm --cached old; mv old new; git add new
执行同样的操作。
(好吧,如果你在old
中有未分级的更改,也就是说,如果跟踪的文件已经更改未在索引中暂存,那么git mv old new
将保持跟踪文件并保持未分级在git add new
将暂存所有内容时,未分阶段更改。
答案 1 :(得分:2)
因为您尚未提交该文件。如果文件已经被跟踪,git
仅对重命名/文件移动的处理方式不同 - 在这种情况下,它不是,所以它仍将它视为新文件。
无论在这种情况下移动/重命名,readme
/ leggimi
仍然是git
的新的未跟踪文件,因此它将被视为这样。