Git - 合并分支

时间:2017-08-14 00:26:36

标签: git merge branch

我正在读这个post,如果我弄错了,还有一些我不知道的事情。

假设我在分支中,另一个开发人员正在开发一个功能,他正在一个名为 newFeature 的独立分支中工作。

如果我在分支中,我拉分支,然后是 newFeature 分支,它们会自动合并?我的意思是我不必做

  

$ git merge newFeature

相反,这些将是我的命令:

$ git checkout master #We move to master branch.
$ git pull origin master #We pull the master branch to sync.
$ git pull origin newFeature #We pull the newFeature branch.

由于我在分支中,并且我正在拉动其他分支,它们会自动合并吗?

3 个答案:

答案 0 :(得分:0)

您正在将newFeature的工作带到它所在的分支,请记住,如果您不想完成所有工作newFeature,您也可以提交。

答案 1 :(得分:0)

我建议完全避免使用pull命令。它只为您运行两个命令:git fetch,简单,安全,直接;然后你应该 - 至少在概念上 - 根据获取的结果选择另一个命令。但是,在看到fetch的结果之前,必须事先选择命令。由于这个原因和其他原因,git pull是一个糟糕的工具,就像电锯一样,只要你加油就会自动启动,即使你还没准备好使用它。当然,它似乎方便,直到你看到一两根手指......: - )

也就是说,git pull运行的第二个命令通常是git merge。 (您可以将其配置为运行git rebase,并且还有其他一些极端情况,它们可能无法运行git merge。)它传递给git merge的精确参数是/有点棘手,特别是因为你可以传递给git pull的一些标志是git fetch的标志,而其他标志只对git rebase有意义,并且有一些标志可以 git merge中非常有用,因为 / p>

因此,这三个命令的简单扩展不是完全相同,但它足够接近:你正在运行:

git pull

这意味着Git实际执行的五个命令是:

git checkout master
git pull origin master
git pull origin newFeature

(因为git checkout master git fetch origin git merge origin/master git fetch origin git merge origin/newFeature 只运行两个Git命令。)

请注意,其中一个git pull命令可能毫无意义:没有理由快速连续取两次。 git fetch步骤获取Git正在调用的另一个Git上可用的任何新提交git fetchorigin - s将更新后的git mergeorigin/master合并到您当前的分支中,一次一个(这几乎可以肯定是您想要的)。

答案 2 :(得分:0)

我绝对同意@torek。 回答原始问题: 如果/当您只是git pull时,两个分支不会自动合并。它对该分支执行“合并”操作 ,但不会改变任何其他分支(例如master)。