【问题标题】:Manually merge git pull request手动合并 git pull request
【发布时间】:2017-03-26 00:51:37
【问题描述】:

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

假设最简单的情况:一个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 所说的一致吗?

【问题讨论】:

    标签: git github merge


    【解决方案1】:

    对于您的第 2 点,它并没有说将故事合并到 master 中,因为这不是 OP 想要做的。

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

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

    如果您将 master 合并到 feature 中,这会将所有对 master 所做的更改带到您的功能分支。功能分支将包含来自 master 的最新更改加上功能中的更改:

                   master
     *---*----*----*
          \         \
           ---*----*--*
                      feature
    
    因此,

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

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

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

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

    【讨论】:

    • 您好,感谢您的帮助!保持线性历史是有意义的,但如果feature 分支是短暂的(即合并后将被删除),那么简单地合并feature INTO master 是否正确,解决出现的冲突,然后删除功能?
    • 这个答案的问题是 github 做了所有它与 --no-ff 选项合并的事情,所以你得到了一个更混乱的树。
    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2014-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-18
    相关资源
    最近更新 更多