我有一个git-svn存储库,想要将一个分支合并到master上。为此,我从分支开始执行以下步骤:
git commit -m "my commit message" # commit the changes on the branch
git checkout master # change to the branch I want to changes to be merged in
git svn rebase # update the repository
git merge --no-ff -m "my commit message" # merge the branch onto master
但是在这个阶段我得到了以下错误:
Auto-merging <file>
CONFLICT (content): Merge conflict in home/httpd/html/data/php/includes/Processes.inc.php
Automatic merge failed; fix conflicts and then commit the result.
然后我去解决一个违规文件上的冲突(其他几个文件合并得很好),并重复了最后一个命令,即
git merge --no-ff -m "my commit message" # merge the branch onto master
但是出现了以下错误:
fatal: You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.
好的,然后提交错误消息提示,
git commit -m "my commit message"
之后,我查看git log
并在输出中看到我给出的两次提交消息!
最后一次提交不包含任何更改,而所有更改(包括具有冲突的文件)都是倒数第二次提交的一部分。
我有三个问题:
git reset HEAD~1
来摆脱最后一次空提交吗?)git merge
那么,还是git commit
或其他什么?如果不清楚,请提供意见,以便我可以更新问题并使其更清晰。
答案 0 :(得分:1)
听起来你做对了。可能你的git log
输出显示你的分支上的提交和master上的合并提交。尝试使用git log --graph --oneline --decorate
,它可以让你看到每个提交的分支。
针对分支提交区分合并提交应仅显示您为解析合并所做的更改,如果合并提交与您的分支提交相同,则不显示。但是,将合并提交与git-svn
区分开来应该会显示完全合并的更改。
如果是这种情况,则没有什么可以修复的 - 没有必要摆脱旧的分支及其提交,尽管如果你&git log
它确实看起来很混乱#39;不使用--graph
选项。