git - merge Git 分支,同时保持各个分支布局

标签 git command-line git-branch

我正在尝试遵循现在著名的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/

相关文章:

.net - 如何在 C# 中访问 Main 之外的命令行参数

git - 没有未 merge 提交的新 pull 请求

git - commit time 在未来的后果

git:谁推送了 post-receive hook

git - 使用 git 获取新的上游分支

git - `git checkout --orphan` 有什么用?

git - 如何将一个分支快进到另一个非主分支

git - 为什么 git 不显示我的文件已修改?

linux - 如何生成可在文档查看器中使用的纯文本源代码 PDF 示例?

mysql - 使用命令行执行.sql文件