我很奇怪,爲什麼當我這樣做:git的RM --cached和 '已刪除' 狀態
git add <file>
,並在那之後,我做的:
git rm --cached <file>
文件保留在刪除狀態在階段。
這裏的例子:
我只尋找有關文件上的「刪除」狀態的解釋。
感謝
我很奇怪,爲什麼當我這樣做:git的RM --cached和 '已刪除' 狀態
git add <file>
,並在那之後,我做的:
git rm --cached <file>
文件保留在刪除狀態在階段。
這裏的例子:
我只尋找有關文件上的「刪除」狀態的解釋。
感謝
嘗試git reset HEAD yourFile
,而不是git rm --cached
。
混合重置會將您的文件從索引中刪除,而不會將其從工作樹中刪除。
請參閱「Undo 'git add
' before commit」。
在你的情況下,git stash
需要上一頁的git reset
,然後git stash pop
將恢復您的變動情況,復位後。
關於git rm --cached
後「deleted
」狀態,該命令在索引寄存器文件,這就是爲什麼你看到它記錄下一個承諾爲「已刪除」的缺失。
我問爲什麼刪除的狀態是那裏產生的
git rm --cached
因爲這個命令應該具有比git reset HEAD <file>
相同的行爲,你可以在git rm
看到。
恩,不,git rm
有不一樣的行爲[git reset][8]
。
雙方將影響指數,但:
git rm
)將記錄文件刪除在下次提交,因此「deleted
」狀態,git reset
)將將HEAD複製到索引,將所述索引重新設置迴文件在HEAD中的內容。您已將該文件添加到索引/緩存(在屏幕截圖中爲綠色),並告知您想要刪除該文件。索引/緩存更改僅在提交完成時執行。
我在想你可能把一個文件放在索引/緩存中,然後想刪除它(所以它不會被提交)。
命令要做到這一點是消息git status
給你(右盤旋deleted
以上。
git reset HEAD <filename>
嗨@David_Culp是的,'git reset HEAD
@Ferpega'git rm --cached'與git reset沒有相同的行爲,請參閱我編輯的答案。 – VonC 2013-03-17 00:12:35
現在很清楚。謝謝。 – ferpega 2013-03-17 00:15:40
你必須'混帳commit'的變化對他們採取在資源庫中的效果。這樣,你可以暫停操作(如果你改變了主意等),它基本上列出了你在工作拷貝(在這種情況下,'rm'命令)對你做的修改之前所做的修改。 – Chris 2013-03-16 22:57:00
通常'綠色「意味着對索引/階段所做的更改,所以,根據你的解釋,我必須明白'已刪除'狀態反映了_delete_是在索引/舞臺上完成的,它有點奇怪,但有意義。 – ferpega 2013-03-16 23:32:52