我正在尝试遵循现在著名的git flow开发模型,但我在理解如何从命令行执行某些操作时遇到一些困难。如果我从 master 分支运行 git mergedevelop ,则开发分支的历史记录将移动到 master 分支。例如:
这是我的存储库在 merge 之前的样子:
F--G--H--I Develop
/
A--B--C--D--E Master
这是 merge 后的样子:
A--B--C--D--E--F--G--H--I Master
这就是我希望 merge 后的样子:
F--G--H--I Develop
/ \
A--B--C--D--E------------J Master
只有使用 git Web 界面 ( gitlab ) 的“merge 请求”功能,我才能获得所需的结果。我知道必须有一种方法可以用 vanilla git 来做到这一点,我错过了什么?
最佳答案
您在 git merge
上缺少 --no-ff
标志。 ff
代表快进;由于 Master 自从 Develop 以来就没有进步过,所以 git 可以进行 merge ,并保证不会有需要解决的 merge 冲突。 git 将这种类型的 merge 称为快进 merge 。 --no-ff
标志强制 git
进行非快进 merge ,这意味着它将进行显式 merge 提交 (J
在你的图表中)。
总而言之:
git merge --no-ff develop
这就是当你通过 Web 界面 merge 时 gitlab 所做的事情。
关于git - merge Git 分支,同时保持各个分支布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24517144/