Git:在 merge 提交上保留分支拓扑

标签 git git-merge

我想问一下Git merge 在以下场景中的情况:

branchA  -*-*-*-*-*
                   \
            branchB *-*-*-*

在这种情况下可以进行 git merge 并获得以下结果吗?

branchA  -*-*-*-*-*---------*
                   \       /
            branchB *-*-*-*

我想要获得的是在分支 A 上进行一次 merge 提交,其中包含来自分支 B 的所有更改。 我知道 git merge 命令中有 --squash 选项,但是我不确定这是否 100% 相当于标准 merge 。

因此,允许我阻止我的分支拓扑,并且只有快进。

提前非常感谢您的帮助!

最佳答案

尝试git mergebranchb --no-ff(来自brancha)。来自 git-merge(1)

--no-ff

Create a merge commit even when the merge resolves as a fast-forward.

即使 git 意识到当前的 HEAD(分支 A,因为这是您将 merge 表单的地方)只不过是分支 B 上提交的祖先,并且没有并行发生任何更改,它也会阻止快进在分支 A 上。

关于Git:在 merge 提交上保留分支拓扑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15703871/

相关文章:

mysql - Git 项目附带的 SQL 数据库引擎

git - 将分支从主提交移动到上一个主提交

git - 如果我从一个分支中挑选一个提交然后 merge 整个分支,那么 git 历史会发生什么?

git - 如何修复错误 merge 中的历史记录

git - 如何在忽略本地更改的同时进行 git pull?

git hooks 及其工作原理

git - 仅还原推送提交的单个文件

Git:放弃远程分支上的所有更改并在不强制推送的情况下推送本地更改

git rebase 颠倒过来

git - 为常规 merge 关闭快进 merge ,但不为 pull 关闭