在未更新的主服务器上合并分支

时间:2010-10-28 10:52:32

标签: git error-handling merge

问题

我合并了一个未在上次提交时更新的主分支。

我做什么

我在主人

中合并了一个分支
git merged BRANCHNAME

冲突

Automatic merge failed; fix conflicts and then commit the result.

git commit -a -m "Resolved conflicts while merging email-fix branch"

然后我试图将所有人推向原始主人,但它说:

 ! [rejected]        master -> master (non-fast-forward)

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

你可以这样做:

  • a git pull --rebase,以便在最新的主分支上重播您的合并
  • 然后是git push(应该顺利进行)

另一个选择是强制推动,这意味着失去了远程大师的近期历史:不是一个好主意。

Git FAQ中提供了两种备选方案,但只提倡简单的git pull git push man page提及git pull --rebase

  

例如,假设您和其他人在同一个提交X开始,并且您构建了一个导致提交B的历史记录,而另一个人构建了一个导致提交A的历史记录。历史看起来像这样:

      B
     /
 ---X---A
  

或者,您可以使用“X”在B之上Agit pull --rebase之间重新定义更改,然后将结果推回原位。 rebase将创建一个新的提交D,在X之上构建BA之间的更改。

      B   D
     /   /
 ---X---A
  

同样,使用此提交更新A将快进并且您的推送将被接受。