gpt4 book ai didi

git - 为什么 git merge 有时会创建一个提交,有时不会?

转载 作者:IT王子 更新时间:2023-10-29 00:47:35 26 4
gpt4 key购买 nike

当我从另一个分支执行 git merge 到当前工作区时,git 有时会进行新的提交:

Merge remote-tracking branch xxx into xxx

有时,它不会:

Fast-forward
... src files ...

那么什么决定是否应该创建提交?

最佳答案

所谓的“快进” merge 不会产生提交,而其他 merge (通常称为“ Octopus merge ”(现在你明白为什么 github 的吉祥物是 Octopus 了))产生提交。

基本上,当您的分支没有发散时,就会发生快进。

假设你想在 master 分支中 merge 一个分支 foo。如果这些分支没有分歧,你就会有这样的历史(每个 * 代表一个提交):

*---* (master)
\
*---*---* (foo)

在这种情况下, merge 是快进,因为(根据图论,这是 git 图的基础),master 可以从。换句话说,您只需将 master 引用移动到 foo,就完成了:

*---*
\
*---*---* (master, foo)

当你的分支出现分歧时:

*---*---* (master)
\
*---*---* (foo)

你必须创建一个提交来“加入”这两个分支:


*---*---*-------* (master)
\ /
*---*---* (foo)

箭头指向的提交是 merge 提交,有两个父提交(以前的 master 分支提示,和当前的 foo 分支提示)。

请注意,您可以使用 --no-ff 选项强制 Git 创建 merge 提交以进行快进 merge 。

我强烈推荐阅读 http://think-like-a-git.net/为了很好地理解图论如何应用于 git(你不需要知道图论,你需要知道的一切都在网站上),这将使使用 Git 变得非常容易:)

关于git - 为什么 git merge 有时会创建一个提交,有时不会?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20222732/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com