合并失败后重复的git log条目

时间:2013-05-27 12:11:45

标签: git git-svn

我有一个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并在输出中看到我给出的两次提交消息!

最后一次提交不包含任何更改,而所有更改(包括具有冲突的文件)都是倒数第二次提交的一部分。

我有三个问题:

  1. 上面发生了什么与使用相同的提交消息创建两个相同的提交?
  2. 有一种'简单'的方法来安全地解决这个问题吗? (我可以做一个git reset HEAD~1来摆脱最后一次空提交吗?)
  3. 在合并后发生冲突的情况下,什么是'标准'程序/命令列表?我应该git merge那么,还是git commit或其他什么?
  4. 如果不清楚,请提供意见,以便我可以更新问题并使其更清晰。

1 个答案:

答案 0 :(得分:1)

听起来你做对了。可能你的git log输出显示你的分支上的提交和master上的合并提交。尝试使用git log --graph --oneline --decorate,它可以让你看到每个提交的分支。

针对分支提交区分合并提交应仅显示您为解析合并所做的更改,如果合并提交与您的分支提交相同,则不显示。但是,将合并提交与git-svn区分开来应该会显示完全合并的更改。

如果是这种情况,则没有什么可以修复的 - 没有必要摆脱旧的分支及其提交,尽管如果你&git log它确实看起来很混乱#39;不使用--graph选项。