【问题标题】:Does git pull always create a merge commit?git pull 是否总是创建合并提交?
【发布时间】:2016-10-10 00:02:16
【问题描述】:

git pull 是否总是创建合并提交?

如果我有一个使用 git pull -r . master 更新的功能分支,然后我切换到 master 并执行 git pull . feature-branch 我不认为我得到了合并提交。

【问题讨论】:

  • git pull 可以快进。
  • 好的,所以当它快进时,它会导致没有合并提交?所以如果我想要一个,我需要使用 --no-ff 标志来强制合并提交?
  • 是的,-ff(快进)标志的描述说:“当合并解析为快进时,只更新分支指针,不创建合并提交. 这是默认行为。”
  • 使用--rebase 标志会改变一些事情(我不确定它是如何工作的),但我认为默认情况下它仍然不应该创建合并提交。不过,不要相信我的话。
  • 我希望看到一个比较不同方式的答案git pull(默认为-no-ff--rebase等)。

标签: git


【解决方案1】:

您在链接的网站上有一个good example about git merge and fast-forward

@MicroVirus 给出了很好的解释。下面,灰色点是你本地 HEAD 在拉取之前的 HEAD(获取 + 合并)。可以看出两种合并方式的区别。


(来源:ofilabs.com

使用git pull 更新您的仓库的另一种方法是使用--rebase 选项。此选项将您的提交应用于重写历史的拉取分支的顶部。你可以阅读details there。 人们在使用git pullgit pull --rebase 之间存在分歧。在我看来,rebase 应该用于错误修复,而不是在将新功能合并到 master 时使用经典 pull。

Git 变基示例

阅读下面的链接以了解不同的观点:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    • 2018-02-01
    • 2015-08-23
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    相关资源
    最近更新 更多