如何從我上次提交中刪除文件,但保留其他所有內容?請注意,我還沒有推送任何東西到遠程存儲庫,所以我只需要在本地執行此操作。從上次提交中刪除文件
我的工作流程:
- 編輯的幾個文件
- 意外地創建一個名爲
untitled.txt
- 提交一切
- 通知不必要
untitled.txt
文件 - 刪除它
- 一個新的文件? ?
- 住幸福快樂的日子提前
謝謝!
如何從我上次提交中刪除文件,但保留其他所有內容?請注意,我還沒有推送任何東西到遠程存儲庫,所以我只需要在本地執行此操作。從上次提交中刪除文件
我的工作流程:
untitled.txt
untitled.txt
文件謝謝!
您可以使用git commit --amend
輕鬆更改上次提交(消息,文件等)中您喜歡的任何內容。
所以,你會做這樣的事情:
git rm untitled.txt
git commit --amend
爲什麼不只是讓第二天提交刪除的文件?編輯提交歷史通常被認爲是不好的做法,並且在隨後的提交中刪除文件並不令人羞恥。
git rm untitled.txt
git commit -m "Woopsy"
這是一個解決方案,但它會在存儲庫的歷史記錄中留下垃圾。 – nhahtdh
我很難將錯誤歸咎於垃圾......我想我只是想擁有項目真實歷史的原始副本。 –
@Ben我會說編碼錯誤不是垃圾,但git中的錯誤是「元錯誤」,而不是項目「真實歷史」的一部分?只是我的兩分錢。 –
如果你不僅想從最後一次提交中完全刪除文件,其他的答案也沒有問題。
但是如果文件的創建不是偶然的,那麼只會將該文件添加到提交中呢?
如果你想只從最後刪除的文件提交,但保留在文件中你的工作副本,讓您可以git add
到另一個承諾,您可以添加--cached
到rm
命令:
git rm --cached wanted-for-another-commit-but-not-this-one.txt
git commit -a --amend
現在驗證它從提交了:
git show -p # no more diff between /dev/null and the file!
確認它仍然存在:
ls -l wanted-for-another-commit-but-not-this-one.txt
確認這是在未跟蹤文件列表中,有資格獲得git add
:
git status
基本上我們所做的是從索引中刪除的文件暫存文件,同時保持工作副本。 git commit -a --amend
命令不僅知道工作副本中的更改,還知道索引中的更改。它注意到從索引中刪除並將該更改傳播到新重寫的提交。
你能否詳細解釋一下?我可以不知何故'git add untitled.txt'刪除的文件到最後一次提交,所以它會取消自己?該命令不適用於添加已刪除的文件。 – MJA
@MatīssJānisĀboltiņš查看編輯........... –
非常感謝!直到現在我還不知道命令「rm」。 – MJA