2017-05-24 214 views
2

我想将我的分支合并到master。我已将我的分支上的所有内容都转换为主人。我需要做git pull,以确保我最新的,但是当我尝试git merge mybranch我得到的错误“git pull”后我会提交所有修改过的文件吗?

error: merge is not possible because you have unmerged files.

git status显示许许多多被修改,大概是从我最近的拉文件。我应该做一个git add .`git commit -m“的东西??,或者处理这个问题的最好方法是什么?对于已经由各自作者自己提交的一系列更改进行提交似乎很奇怪?

回答

1

请勿使用git pull。它只会让你困惑。好吧,我觉得已经有了!

git pull所做的就是运行git fetch(从其他Git获得新的提交),然后是第二个Git命令。通常的第二个Git命令是git merge。它看起来像你运行这两个命令。在这种情况下,您运行了git fetch origin,然后是git merge origin/master

现在可能发生的情况是第二个命令失败。但既然你不知道git pull意思是git fetch && git merge,你所看到的只是这个奇怪的错误,它是在抱怨你已经已经合并。现在你想合并别的东西,但是你不能,因为你还在失败合并中间。

如果您运行了git fetch origin,您会看到它的工作。然后你会运行git merge origin/whatever,看到它失败,知道你必须完成本次合并,还是中止,或重订,或者不管它是什么,你喜欢在这一点上做,然后才能git merge另一个分支。

git pull命令意味着是一个方便,短切做两个Git命令,因为一个git fetch几乎总是将要遵循与任一git mergegit rebase。所以当Git第一次被建造时,他们只提供的用户前端git pull,后者使用隐藏后端git fetch。但事实证明,将两个步骤分开是非常有用的,这样你就可以(例如)看到你有什么fetch ed。他们使得git fetch仅仅用于人类(就像其他任何Git命令一样:-)),以及git pull只是为了方便。它是什么,除非不是,就像现在一样。

1

是的,这是一种方法:首先pull(git会尝试自动合并拉出的文件然后)或fetch - 那么你将不得不手动执行merge。完成后提交合并,然后推送所有更改。

还有另外一种方法,git rebase。我更喜欢它,但这取决于你和你的团队如何使用git,所以它可能会或可能不是你的情况下的正确工具。

+0

是否存在此后提交提交的规范提交消息? – 1252748

+0

也只是为了澄清,合并后,我的下一个步骤(如果不是rebasing):'git add。''git commit -m'post pull commit'''git merge my-branch'? – 1252748

+0

规范的消息将包含合并关键字(这就是默认的默认提交消息“Merge(...)”所表示的步骤:1.修正合并冲突,2.合并git,3。 git commit -m,4. git push。你不需要'git add',因为这些文件已经被添加到版本库。 – syntagma

相关问题