我的一位礦工做了一系列的合併(9次提交和2次還原),就我所知,他已經解開了過去兩個工作日內的所有代碼更改。我可以確定最後一個好提交,我可以git checkout
它。對於每一次未兌換的提交來說,推薦合併並恢復到良好狀態 - git revert
的推薦做法是什麼? git reset hash --hard
?Git合併瘋狂最終將所有開發人員的工作恢復爲兩天:如何恢復?
1
A
回答
4
恢復合併提交可能會非常棘手 - 特別是如果它們是惡意合併,這聽起來像是這樣。如果你能擺脫它,把它們吹走更容易。這裏有兩大選擇:
git reset --hard <good-commit>
。這需要一些協調,因爲任何其他開發人員拉動壞分支也將需要reset --hard
(如果他們已經做了工作,他們必須小心保存,等等)。如果你的同事試圖做一些好事,你可能會重做他的合併 - 但這次做得對!手動恢復到合併前。從頂層
git checkout <good-commit> .
,然後git commit
- 一定要寫出一條好消息來描述你剛剛完成的工作。你正在做出一個承諾,把所有事情都恢復到這個良好的狀態,但是從那時起就保留了所有的歷史,這樣人們就能夠很好地拉動它。如果你這樣做,注意就Git而言,你仍然合併了你的同事合併的任何東西。如果其中一些合併的提交實際上是很好的工作,並且您仍然希望包含它們,那麼最簡單的事情可能是在手動恢復提交之上挑選它們。
最後,如果這兩個都不滿意 - 如果你不想被吹走歷史,但你也想重返一些你的同事試圖合併,但不挑肥揀瘦..你可以結合這兩者。這個想法仍然是在主控制器之上進行手動恢復提交,但是要做到合併應爲所導致的狀態,而不是合併之前的狀態。
# create a new branch, starting from the good commit
git checkout -b temp <good-commit>
# redo the merges, but do it right
# make sure your work tree is how you want it after the merge(s)
git merge ...
# switch back to master
git checkout master
# get your work tree into the good state
git checkout temp .
# and commit that
git commit
相關問題
- 1. Git恢復合併
- 2. Git的工作流,恢復併合並在未來
- 3. 恢復git合併-s我們的
- 4. Docusign開發人員帳戶恢復爲試用帳戶
- 5. Git合併主無需恢復提交
- 6. 如何恢復終端?
- 7. 如何恢復unpushed git commit
- 8. 如何恢復Git倉庫
- 9. 如何恢復「git rm -r。」?
- 10. 恢復Mercurial中的合併
- 11. 從早先的git合併中恢復已恢復提交的文件
- 12. Git - 分支恢復不丟失工作
- 13. 如何恢復的處所
- 14. git stash apply並沒有恢復所有的文件
- 15. 恢復合併分支
- 16. 使用git checkout來恢復文件 - 無論如何恢復它?
- 17. Git恢復誤解
- 18. 恢復git提交
- 19. Git恢復更改
- 20. 如何恢復覆蓋git中的合併文件?
- 21. git rebase after git恢復
- 22. 恢復使用的碼頭工人(Web開發)
- 23. 恢復Subversion版本庫並通過每個人的本地更改將其恢復爲最新版本
- 24. 恢復分支或從中繼恢復合併?
- 25. 無論如何查看所有以前的GIT恢復
- 26. 沒有私人恢復爲TARGET_DEVICE
- 27. AppEngine恢復所有任務
- 28. 如何暫停工作流程並恢復工作流程?
- 29. 破碎的git工作區,如何恢復?
- 30. Yii 1如何恢復所有遷移
我正在'git checkout .'然後'git commit'。我想他明天將不得不做他的合併/重新工作。謝謝。 –
hughdbrown
2011-04-05 03:24:26
@ hughdbrown:請閱讀該段的其餘部分。 Git認爲這些提交已經合併,所以試圖再次合併它們現在不起作用。你會(或他會)必須挑選它們。 – Cascabel 2011-04-05 03:37:54
是的,我知道他不能自動應用他的更改,但必須手工重新創建或櫻桃挑選它們。 – hughdbrown 2011-04-05 17:47:56