git pull
基本上是两个操作同时进行:git fetch
,然后是 git merge
(除非你使用 git pull --rebase
,那么你可以猜到会发生什么)。
你看到这个的原因是因为 Git 不能像大多数情况下那样执行 快进合并。通常的原因是因为你已经在本地对想要拉取的分支进行了 git commit
,现在需要将远程更改与本地更改合并。
值得注意的是,Git 为你预先填充了合并消息,所以你不需要真正输入任何内容。只需保存并退出,合并就应该完成了。(当然,如果存在合并冲突,则需要手动解决)。
Host gitserver User git Hostname 91.12.12.12 Port 22 IdentityFile ~/.ssh/pratikj
? - Pratik JoshiLinus Torvalds最好地解释了这一点:
向大家宣传即将到来的“git” UI变化,因为我对此负有很大责任。
这个变化希望能让人们编写合并消息来解释他们的合并,甚至在不必要时决定不合并。
我最近几周一直在使用这个git功能,并且我的来自子维护者的合并中有各种注释(至少如果子维护者给了我),所以我正在尝试以身作则。
但如果您不喜欢解释您的合并,那么这可能会令人烦恼。当然,如果您不解释您的合并,那么您就是令人烦恼的,所以这最终会均衡。“业力平衡”,可以这么说。
master
合并到mybranchSample
分支,则这是完全正常的。Git会将master
合并到mybranchSample
(当您在mybranchSample
分支中执行了git pull origin master
)并为您提交合并更改(除非有冲突),然后提供预填充消息。您只需要保存并退出即可。master
分支合并,则应切换到master
并从master
拉取。git checkout master
git pull origin master
试图给大家一个简单的答案,如有不当之处请纠正:
这似乎发生在你在分支上提交后执行git pull
时。你本地的更改在远程上不存在,所以它会进行一次提交以使所有内容同步。
mybranchSample
,你想要在其上进行工作——目前与主分支无关(也就是说,你不想将你的分支合并到主分支或者反过来)。你在问题中提到:
但是你所做的是当我从我的分支拉取之后,像这样...
git pull origin master
,它会从主分支拉取。相反,你应该能够使用git版本 >= 1.6.6来检出你的远程分支。git fetch
git checkout mybranchSample
2) 如果你想在 mybranchSample
上工作,但是想要最新的主分支代码,那么合并可能是必要的,正如Anand S所说的那样。
master
合并到mybranchSample
还是只是想要更新master
中的代码? - Anand SHost gitserver User git Hostname 91.12.12.12 Port 22 IdentityFile ~/.ssh/pratikj
? - Pratik Joshigit status
的输出,而不是提供赏金?这样做更有可能得到一个包含相关细节的问题的答案。 - Andrew C