我意外修改了合併提交而不是創建新提交。現在我不知道如何提取我可以推送的正常提交的更改。這些更改將顯示在gitk中,但不會以format-patch顯示。請幫忙。Git:恢復我修改後的更改合併提交
2
A
回答
3
您有2個感興趣的SHA - 原始合併提交和修改的合併提交。你想要做的是git reset
HEAD
原來的合併提交,同時保留您的索引和工作目錄。然後您可以創建一個掛起合併提交的新提交。
使用
git reflog
發現,原來合併的SHA提交
復位到提交與引用日誌 git reset ORIGINAL_MERGE_COMMIT_SHA
或直接與git reset [email protected]{X}
其中X是1或引用日誌的位置代表合併提交。
您現在應該準備好git commit
您的原始更改,並且不會在此處傳入--amend,您將創建一個新的提交。
2
我發現其中一個工作方式:
git diff HEAD~1 > p.patch
git checkout master
git checkout -b branch-name
手動編輯p.patch從合併去除不相關的更改。
git apply p.patch
但我懷疑有一個更容易/更好的方法來做到這一點。
相關問題
- 1. 如何恢復從git提交更改?
- 2. 的Git:如何提交反後局部修改合併
- 3. Git合併主無需恢復提交
- 4. Git恢復更改
- 5. 修復git中的合併提交
- 6. git修改併合並一個不在主的提交
- 7. 基於恢復提交的新更改?
- 8. Git的還原,然後提交,但要保留修改前恢復
- 9. 恢復過去的git提交,但保持更改自
- 10. 修改後提交
- 11. 還原一個Git合併提交,然後恢復該還原
- 12. 告訴Git提交是否合併/恢復提交
- 13. 恢復git提交
- 14. Git的撤銷合併是刪除未提交的修改
- 15. 無法git克隆後立即恢復到較舊的提交(無需更改)
- 16. 移動合併提交回舊分支,恢復主分支並保持更改
- 17. Git恢復合併
- 18. Git:恢復舊的提交
- 19. 如何恢復和修復Git中的文件更改
- 20. 「git pull」後我會提交所有修改過的文件嗎?
- 21. 從早先的git合併中恢復已恢復提交的文件
- 22. 我無法在SVN合併後提交更改
- 23. 如何恢復最後的提交併保持mercurial中的更改?
- 24. 合併未提交的更改
- 25. Git:提交部分更改
- 26. 更改Git提交信息
- 27. 恢復到git中的特定提交,編譯,然後恢復到最新更改
- 28. Git不會恢復或提交它認爲被修改的文件
- 29. 應用已合併然後恢復的更改
- 30. Git恢復本地提交
取決於你做了什麼'git reset HEAD @ {1}'可能會工作。首先檢查'git reflog'。 – 2014-10-28 03:46:34
對我不起作用:( – Artem 2014-10-28 03:57:54
什麼是reflog輸出?你應該能夠從它得到原始合併提交的SHA,這取決於你做了什麼,它可能是在不同的位置,雖然。 – 2014-10-28 03:59:59