代码之家  ›  专栏  ›  技术社区  ›  John Lemuel Suarez Arcaz

如何将所有提交从一个分支合并到另一个分支?

  •  1
  • John Lemuel Suarez Arcaz  · 技术社区  · 7 年前

    2 回复  |  直到 7 年前
        1
  •  3
  •   torek    7 年前

    您已将其交叉标记为两者

    GitHub提供了一个标记为“合并请求”的按钮,带有一个下拉三角形。点击三角形可以提供更多选项(至少在正常情况下是这样) the GitHub help page 表示这“取决于为存储库启用的合并选项”):

    • 挤压和合并
    • 重新设置基础和合并

    • git merge 获得依赖于情况的默认操作;
    • git merge --ff-only 防止合并,但允许快进行动;
    • git merge --squash 强制挤压动作,而不创建合并;
    • git merge --no-ff 强制合并操作;或
    • git rebase git合并--仅限ff 复制提交以使快进成为可能这是默认的重新定位操作,然后执行快进操作。

    git合并--无ff ,就最终结果而言(不同之处在于,如果存在合并冲突,GitHub根本不会提供此选项,但是 see this page 以及)。三个GitHub操作中的第二个相当于命令行 git合并--挤压

    ... 只会在master上记录一次提交,就像我在分支A上提交了20次一样

    注意,新提交具有相同的 与其他N个提交一样,但是是一个普通的、非合并的单亲提交(这在GitHub接口中很难看到,因为它试图隐藏Git提交图的非线性性质)。看见 this GitHub help page squash diagram --no-ff 在命令行上,具有 父级:第一个父级是执行合并的分支上的上一个提交(即。, master ),第二个父级是合并的分支(分支)的tip提交 A 在您的示例中)。这意味着所有N个独立的提交都保持独立:只添加了一个新的提交,表示 结合

    在许多方面,这是最好的结果:它允许您将功能添加视为单个单元(合并提交)或一系列更改(分支上的N个单独提交)。但它确实会导致更复杂的历史:如果存在合并的事实预计在将来是无用的或分散注意力的,而N个单独的提交预计是有用的(例如,用于调试),那么最好使用 快进 活动

    在GitHub上。

    合并分支 默认情况下会这样做。如果可能的话, git合并--仅限ff 将会成功。所以如果你想尝试快进,但是 创建一个实际的合并提交,如果它是 git合并--仅限ff

    如果当前正在快进 使之成为可能,之后您可以使用 合并分支 --ff-only ,既可以作为安全检查,也可以覆盖使用设置的任何配置 git config merge.ff ). 重新定基有点复杂,至少当它出错时是这样,所以正如其他人说的那样,你应该先仔细阅读。


    1. 或者至少,太难了。如果有一个点击按钮显示实际的提交图,那可能会很有趣。

        2
  •  0
  •   Ethan Kawkji    7 年前

    听起来你在寻找大师级人物。

    尝试:

    git checkout A
    git rebase master
    

    https://www.atlassian.com/git/tutorials/merging-vs-rebasing