当我从另一个分支执行git merge到当前工作区时,git有时会进行新的提交:
Merge remote-tracking branch xxx into xxx有时,它没有:
Fast-forward
... src files ...那么,是什么决定了是否应该创建提交呢?
发布于 2013-11-26 16:48:59
所谓的“快速转发”合并不会产生提交,而其他合并(通常被称为“章鱼合并”)则生成提交。
基本上,当你的分支没有发散时,快速前进就会发生.
假设要将分支foo合并到master分支中。如果这些分支没有分离,您将有这样的历史记录(每个*表示一个提交):
*---* (master)
\
*---*---* (foo)在这种情况下,合并是快速前向,因为(根据图论,这是git图的底层基础),master可以从foo获得。换句话说,您只需将master引用移动到foo,您就完成了:
*---*
\
*---*---* (master, foo)当你的树枝分叉时:
*---*---* (master)
\
*---*---* (foo)您必须创建一个提交来“加入”这两个分支:
↓
*---*---*-------* (master)
\ /
*---*---* (foo)箭头指向的提交是合并提交,有两个父提交(前master分支提示和当前foo分支提示)。
请注意,您可以强制Git创建合并提交,以便使用--no-ff选项进行快速合并。
我强烈建议阅读http://think-like-a-git.net/,以便很好地理解图论如何应用于git (您不需要了解图论,您需要知道的一切都在网站上),这将使Git的工作变得非常容易:)
发布于 2013-11-26 16:39:28
您可以使用--no-ff选项强制新提交以避免快速转发。
发布于 2013-11-26 16:39:47
快速转发意味着已经发生了提交,并存储在日志中,并且您的头(指针)已经向前移动到该提交。您可以签出合并行为这里
https://stackoverflow.com/questions/20222732
复制相似问题