我意外修改了合并提交而不是创建新提交。现在我不知道如何提取我可以推送的正常提交的更改。这些更改将显示在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