我有幾個提交已經完成,我需要撤消最新的提交,但要對其進行更改。請建議如何做到這一點。謝謝。如何取消最新提交併保留更改?
回答
git reset --soft HEAD^
請注意,如果尚未推送HEAD,則只應回捲HEAD。
編輯在迴應原來的問題您的評論:
如果你只想要編輯最近的提交,Git有一個很棒的功能commit --amend
。只需使用git add
/git rm
/git checkout
,直到您的索引處於您希望的狀態(添加了新更改,刪除了一些更改,刪除了文件...)。然後使用git commit --amend
,它會彈出vi(或者你在core.editor
中配置的任何東西),並顯示上次提交的提交消息供您編輯。
請注意,當我說>編輯最近的提交<,Git實際上創建一個新的提交。所以,不這樣做,當提交已經從其他人拉(即推送到公共倉庫)
如果要更新最近提交,然後修改這個承諾會做的工作:
<do the changes you want to>
git add <missing files>
git add <changed files>
git commit --amend
就是這樣。
如果您需要更改註釋並將其他文件添加到之前的提交,我建議您改爲使用interactive rebase。
<do the changes you want to>
git add <missing files>
git commit -a
git rebase -i HEAD~3
在彈出你會看到類似
pick <SHA1> Commit that you wanted to change
pick <SHA2> Next commit that you seem to try to rollback in your question
pick <SHA3> Just committed fixes to SHA1
更改編輯器它是
pick <SHA1> Commit that you wanted to change
f <SHA3> Just committed fixes to SHA1
pick <SHA2> Next commit that you seem to try to rollback in your question
( 'F' 表示 '修正' - 南瓜SHA1 ANS SHA3並丟棄SHA3的提交消息之一)
保存更改,退出編輯器。你完成了。
對於已經推送到上游的提交,不應該這樣做。
'previous'和'most recent' commit有什麼區別?我沒看出任何區別。 – Eugene
最近的提交是當前的提交(即分支的頭)。以前的提交是當前的提交。 – mgautierfr
是的,抱歉在這裏模棱兩可。在我的術語中,「最近的」是「HEAD」,「前一個」是'HEAD'。 –
- 1. 取消合併分支,保留合併後提交
- 2. 刪除提交,但保留更改
- 3. 如何跨合併保留Subversion提交消息?
- 4. 如何在保留「最新」提交的同時壓縮大量「先前」提交?
- 5. 如何更改寬度並保留rtl?
- 6. 保留並保留提交時的舊下拉列表值並刷新頁面
- 7. 如何修改第二最新提交
- 8. 如何撤消提交併將更改提交到Git中的其他分支?
- 9. 如何恢復最後的提交併保持mercurial中的更改?
- 10. 提交表單並保留值設置
- 11. 如何在合併時保護目錄免受提交更改?
- 12. Git - 推送新提交併忽略未提交的更改
- 13. Codeigniter如何提交後保留價值
- 14. 3次提交的表單;如何保留最終提交的數據?
- 15. svn撤銷舊提交,保留新提交
- 16. Git:簽出一個保留未提交更改的分支
- 17. SVN:恢復提交,同時保留本地更改
- 18. 混帳復歸提交/推而保留的更改
- 19. 重新提交更改?
- 20. 汞柱更新一次提交消除任何改變
- 21. Git如何更新本地存儲庫並保留我的更改
- 22. 在提交後保留值
- 23. LINQ提交更改不提交更改
- 24. 提取最後一個元素,並保留文件夾名稱
- 25. Json.NET更改值並保留評論
- 26. 更改會話ID並保留數據?
- 27. 打開SqlCeConnection並不保留更改
- 28. 取消當前分支中的所有提交,但保留當前狀態下的所有更改
- 29. 將最近一次提交的提交消息更新到本地分支
- 30. 如何提取子數組的最大值並保留父數組的鍵?
http://stackoverflow.com/questions/927358/git-undo-last-commit – simplyharsh
爲什麼?你是否需要更改該提交(添加/刪除更改)? – Mat
我需要更改註釋並添加一些其他文件。 – Eugene