我意外地修改了合并提交而不是创建新的提交。现在我不知道如何将更改提取到我可以推送的正常提交。更改将以gitk显示,但不会出现在format-patch中。请帮忙。
答案 0 :(得分:3)
我找到了一种有效的方法:
git diff HEAD~1 > p.patch
git checkout master
git checkout -b branch-name
手动编辑p.patch以从合并中删除不相关的更改。
git apply p.patch
但我怀疑有一种更容易/更好的方法。
答案 1 :(得分:3)
您有两个感兴趣的SHA - 原始合并提交和修改后的合并提交。您要做的是git reset
HEAD
到原始合并提交,同时保留索引和工作目录。然后,您可以创建一个挂起合并提交的新提交。
使用
git reflog
找到原始合并提交的SHA
重置为提交
git reset ORIGINAL_MERGE_COMMIT_SHA
或直接来自带有git reset HEAD@{X}
的reflog,其中X为1或reflog中代表合并提交的位置。
您现在应该准备git commit
原始更改,并且不要在此处传入--amend,您将创建一个新提交。
答案 2 :(得分:0)
这对我有用:
git reset --hard xxx
其中 xxx
是修改后的合并提交 SHAgit reset --soft yyy
其中 yyy
是原始合并提交 SHA这让我不小心修改了更改。