0
A
回答
2
據我可以告訴你的帖子和評論,你想恢復F
和E
,但保留它們作爲歷史。你可以做的是這樣的:
git revert HEAD~n..HEAD
當你更換n
遠然而從HEAD
回來(你當前提交)提交後D
是。
這將做的是以相反的順序恢復HEAD
與D
之後的提交之間的每一次提交,確保沒有衝突。
當在該範圍內存在合併提交時,這變得非常複雜。如果有,做這樣的事情:
git revert -m 1 HEAD~n..HEAD
這將傾向於合併的第一父分支提交,並刪除在其他分支合併更改數據。這樣做要非常小心,因爲它可能不會做你真正想要的。
0
在反對接受的答案,我建議(假設你正在談論的master
分支,它要重新設置幾個提交,同時保持跳過那些周圍的地方):
git checkout master
git checkout -b old_master
git branch -f master D
git checkout master
這給你一個非常明確的歷史,並且卸下了垃圾仍然是圍繞
master
|
v
A-B-C-D
\
E-F
^
|
old_master
任何進一步的提交將導致發散歷史...
master
|
v
A-B-C-D-G-H
\
E-F
^
|
old_master
因此,E和F永遠不會混淆你的「真實」歷史,但你將永遠能夠回到他們身邊。如果當你決定你終於不再需要它們時,你只需git branch -D old_master
,它們就沒有任何痕跡。
相關問題
- 1. 如何編輯以前的git commit?
- 2. 恢復以前的git commit?
- 3. 如何使用Intellij編輯以前的git commit消息?
- 4. 完全覆蓋以前的git commit
- 5. 如何使用git? git-commit?混帳推?
- 6. 如何使用之前的git commit進行推送
- 7. 我該如何回到以前的Git Commit?
- 8. 如何更新我的git工作副本到以前的版本
- 9. 將單個文件移出git commit並將其放在單獨的git commit中
- 10. 「git commit」前的多個「git add」
- 11. 如何將舊版本合併到git中分支的頭部?
- 12. 瞭解何時使用git commit -m和git commit -am
- 13. 如何阻止我使用'git commit -a'?
- 14. git-svn:如何知道git-svn工作副本的當前SVN修訂版本?
- 15. Git commit bash腳本
- 16. git un-remove commit之前?
- 17. 以任意的git工作副本,並使遠程分支完全相同
- 18. 如何用git smart commit指定版本?
- 19. 如何使用git比較工作副本,臨時副本和已提交副本的文件
- 20. git commit -m vs git commit -am
- 21. 使用git commit -a和vim
- 22. SVN合併以前的版本到工作副本
- 23. GIT - 將現有本地副本與克隆副本合併
- 24. 爲什麼我必須使用「git commit -a」而不是「git commit」?
- 25. 如何使箭頭與pseudoelement:以前
- 26. 併發git checkout/add/commit
- 27. Git commit hook - 如何使用commit-msg掛鉤檢查消息中的字符串?
- 28. 使用TreeSet中的副本並將副本打印出來
- 29. 使用git更新手動副本
- 30. 如何生成上個月的git commit日誌,並將其導出爲CSV?
你爲什麼要在HEAD上播放一個Git提交的副本,甚至有什麼意思呢? –
我搞砸了我以前的提交,但我想保留它們作爲歷史 – slimboy
是否存在要保留的'E'和'F'的特定元素?爲什麼不只是恢復'F'和'E'並且完成它呢?在當前的「HEAD」上恢復不會導致衝突。 –