【发布时间】:2020-01-25 18:59:33
【问题描述】:
我正在阅读 Pro Git 书籍,但在变基时遇到了困难。
下面是场景:
我们可以看到遥控器做了一个变基,(不是一个好的做法,因为其他人可能会基于它工作)。
然后作者说:
如果您执行 git pull,您将创建一个包含两行历史记录的合并提交,您的存储库将如下所示:
我不明白为什么git pull会自动合并C4和C7,因为我们知道通常git pull不会为你做合并,你必须自己合并,那么为什么在这种情况下会git pull为你合并?
编辑:
对不起,我打字和思考太快了,我说的是git fetch不会自动合并,git pull会合并,git pull = git fetch + git merge。
所以我的问题是,为什么作者说:
当你重新定义东西时,你放弃了现有的提交并创建了相似但不同的新提交。如果你将提交推送到某个地方,而其他人将它们拉下来并基于它们进行工作,然后你用 git rebase 重写这些提交并再次推送它们,你的合作者将不得不重新合并他们的工作,当你尝试时事情会变得一团糟将他们的工作拉回到你的工作中。
我真的很困惑,如果开发人员在合并后没有做 rebase,所以我们将步骤 1 中的图片作为开始,那么开发人员在 C6 之后添加了一个名为 C8 的新提交,那么如果我在我的电脑上调用git pull,C8 仍然需要与C7 合并,所以无论如何它都必须重新合并工作,这是无法避免的,事情会变得一团糟,所以有什么问题用那个?
【问题讨论】:
-
谁说
git pull通常不做合并?这正是它的作用。它首先执行fetch,然后执行merge。 -
@JonathanWakely 抱歉,我说的是 git fetch,我已经编辑了我的问题,请看一下,谢谢
标签: git