手动合并git pull请求

时间:2016-11-11 18:20:29

标签: git github merge

我对手动合并拉取请求的正确方法感到困惑,并且理解为什么有关于它的不同建议。

假设最简单的情况:一个master(长期存在的)分支和一个单feature个分支,其中有几个提交,其中发出拉取请求但显示与主分支的合并冲突。

GitHub说:

git fetch origin
git checkout -b feature origin/feature
git merge master

然后

git checkout master
git merge --no-ff feature
git push origin master
  1. 为什么我们将master合并到feature然后反过来呢? This SO表明订单无关紧要,但This SO表明存在与家长有关的问题。

  2. This SO讨论了手动合并拉取请求,但表示您只需要将主分支合并到您的功能分支中就可以了。这与GitHub所说的一致如何?

1 个答案:

答案 0 :(得分:2)

对于你的观点2,它没有说将故事合并到主人,因为这不是OP想要做的事情。

关于你的问题。我们假设我们有这个:

               master
 *---*----*----*
      \        
       ---*----*
               feature

如果将合并到功能中,则会将所有更改都发送到您的功能分支。功能分支将包含来自主的最新更改以及功能中的更改:

               master
 *---*----*----*
      \         \
       ---*----*--*
                  feature

master 因此仍将指向与之前相同的提交,但 feature 将指向新的提交,其中包含两个分支的所有更改。

因此,您仍需要将功能中的更改合并回主控。这是一个非常简单的操作,因为master是一个功能的祖先。所以合并是一个简单的快进

 *---*----*----*
      \         \
       ---*----*--*
                  feature
                  master

我更喜欢保留线性历史记录,从而在将其合并到master之前重新设置master上的功能分支。但你的里程可能会有所不同。