【问题标题】:Git merge looks like a rebaseGit 合并看起来像一个变基
【发布时间】:2014-10-23 15:54:16
【问题描述】:

我有一个关于 Git 和合并的问题。我的印象是 Git 合并创建了一个新提交,它是两个分支之间分歧历史中所有更改的产物。并且变基只是将更改从一个分支重放到另一个分支。但是当我今天进行一些合并时,当我查看我的 git 日志时,它显示该分支具有来自其他分支历史记录的所有提交,就好像我刚刚做了一个变基一样。谁能解释为什么合并看起来像一个变基?还是我完全误解了合并和变基?

【问题讨论】:

  • 合并就是合并;变基是变基。当您将branchA 合并到branchB 时,branchA 的历史记录将成为branchB 的历史记录的一部分。因此,在branchB 的日志中看到过去只在branchA 的历史记录中的提交,您应该不会感到惊讶。
  • 使用您最喜欢的搜索工具查找“快进”合并的概念...

标签: git github merge rebase


【解决方案1】:

git merge 不会创建一个新提交,它是分歧历史中所有更改的产物。它连接了两个分支。如果合并是快进(也就是说,如果没有分歧的历史记录,并且您还没有与 --no-ff 合并,那么您将看不到额外的提交并且历史记录看起来好像您已经重新定位,因为最终效果是一样的。如果有不同的历史,那么将创建一个新的提交,有多个父级(每个正在合并的分支一个父级)。除了有多个父级之外,提交可能包括一些更改。这通常发生在存在合并冲突时:合并提交包含解决这些冲突的更改。

如果您希望您的合并是明确的(始终将两个分支都作为父级),您可以调用git merge --no-ff,这将强制创建合并提交,即使它可以通过执行快进来避免合并。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 2017-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    相关资源
    最近更新 更多