Git pull请我写合并消息

时间:2015-12-30 09:11:52

标签: git git-merge git-pull

我来自我的分支

git checkout mybranchSample
git fetch
git pull origin master

然后,Git给了我以下信息:

  

请输入提交消息以解释为何需要此合并,
  特别是如果它将更新的上游合并到主题分支

输入提交消息后,它会将master合并到我的文件中。即使我没有处理master中的某些文件,但当我输入git status时,它会以绿色显示文件列表。

这个问题发生在我的同事身上,但仅限于我。 这背后的原因是什么?

6 个答案:

答案 0 :(得分:36)

git pull基本上是两个操作:git fetch后跟git merge(除非您使用git pull --rebase,在这种情况下您可以猜测会发生什么)。

您之所以看到这一点,是因为Git无法像大多数时间那样进行快进合并。这样做的原因通常是因为您已git commit本地访问了您尝试提取的分支机构,现在您需要将远程更改与本地更改合并。

还值得注意的是,Git为您预先填充了合并消息,因此您并不需要输入任何内容。只需保存并退出,合并即可完成。 (当然,除非存在合并冲突)。

答案 1 :(得分:25)

Linus Torvalds解释得最好:

  

传播关于即将到来的' git'用户界面改变,因为我   主要是责备。

     

这个改变有希望让人们写合并消息来解释   他们的合并,甚至可能决定根本不合并   必要的。

     

我过去几周一直在使用那个git功能,而且它   导致我从子维护者的合并中有各种笔记   他们(好吧,至少如果子主机给了我任何东西)。所以我试着这么做   以身作则。

     

但如果你不想解释你的合并,这可能会很烦人。   当然,如果你不解释你的合并,你很烦人,所以它   最后都变得平淡无奇。 " Karmic balance",可以这么说。

来源:https://plus.google.com/+LinusTorvalds/posts/SrePhcj6XJe

答案 2 :(得分:3)

如果您尝试将master合并到mybranchSample分支,那么这是完全正常的。

Git将master合并到mybranchSample(当您从git pull origin master分支mybranchSample时)和commits合并更改(除非有任何冲突) )并为您提供预先填充的消息。你可以保存并退出。

但是如果您只是尝试从远程master分支获取最新代码以与本地master分支合并,那么您应该结帐到{{1然后从master拉出来。

来自你的陈述

  

它将主文件合并到我的文件中。即使我没有处理来自master的一些文件,当我输入git status时它会以绿色显示文件列表。

我认为你正在尝试做第二个。

所以,试试:

master

答案 3 :(得分:3)

我认为你的分支有问题......我可以想象你面临的两种可能情况:

1) 你有一个远程分支,A a; A::B b = a.begin(); ... ,你想要工作 - 你现在与主分支无关(也就是说,你不想将你的分支合并为主分支,反之亦然)。你在问题中说了

  

当我在获取之后从我的分支取拉...

但你做的是mybranchSample,它来自。相反,您应该能够使用git版本> = 1.6.6来使用

结帐远程分支
git pull origin master

2)您尝试使用git fetch git checkout mybranchSample ,但想从那里获得主分支的最新代码。然后,正如Anand S所说,合并可能是必要的。

答案 4 :(得分:2)

这只发生在你身上的原因并不是你的配置不同,而是你所合并的分支是不同的。

你没有改变的差异中的文件的原因是在合并之后,新的提交必须是父提交:你最后提交的提交和master上的最新提交。新提交包含所有更改/文件。因此,如果您从区分到上次提交,您将看到所有已更改/添加的文件已在主服务器上更改/添加,而您的分支与您的分支不同步主分支。

答案 5 :(得分:1)

只是尝试给大家一个简单的答案,如果我不正确,请纠正我:

在分支上提交git pull后,似乎会发生这种情况。您的本地更改在遥控器上不存在,因此它会提交以使所有内容同步。