2010-10-11 100 views
4

我跑了這一點:git的MV不會刪除舊文件

$ git mv README README.md 

然後:

$ git commit -m "renamed" README.md 
$ git push origin master 

但隨着在github上,舊的README文件仍然在資源庫中。 爲什麼?

回答

5

因爲您從未實際犯過移動的刪除部分。

http://www.kernel.org/pub/software/scm/git/docs/git-commit.html

添加可以通過多種方式來指定的內容:

...

3)列出文件作爲參數傳遞給commit命令,在這種情況下,提交將忽略在索引中進行的更改,而是記錄列出的文件的當前內容(它必須已爲git所知);

注意這裏至關重要的一點:將忽略索引中上演的變化。 git mv階段都刪除舊文件和創建新文件,但不提交它們。當您致電git commit README.md時,它會提交文件的新名稱版本,但會忽略舊文件的暫存刪除。

試試這個序列代替:

$ git mv README README.md 
$ git commit -m "renamed" 
$ git push origin master 
+0

提交的不尋常的形式好去處。 – 2010-10-11 07:15:02

+0

這個工具有時會被破壞的另一個原因......另外,如果'push'發生在'commit'之後的某個時間,'git push origin master'似乎不起作用。也就是說,執行另一個不相關的提交,然後嘗試'git push origin master'來完成Git無法一步執行的操作。 – jww 2016-04-22 18:42:47