【发布时间】:2012-07-25 07:45:51
【问题描述】:
在我们的 Git 存储库中,我们有一些来自应该与 --no-ff 合并但没有合并的分支的合并。这些合并是很久以前进行的。
有什么方法可以强制/插入提交,就好像我们正在使用 --no-ff 参数运行那些旧合并一样?
项目中的一位超级喜欢 GitHub 的网络视图,希望能够看到各个分支,当发生快进时,这些分支都合并为一行。
【问题讨论】:
标签: git github git-merge fast-forward
在我们的 Git 存储库中,我们有一些来自应该与 --no-ff 合并但没有合并的分支的合并。这些合并是很久以前进行的。
有什么方法可以强制/插入提交,就好像我们正在使用 --no-ff 参数运行那些旧合并一样?
项目中的一位超级喜欢 GitHub 的网络视图,希望能够看到各个分支,当发生快进时,这些分支都合并为一行。
【问题讨论】:
标签: git github git-merge fast-forward
如果您不介意拥有一个新的主/主分支(或覆盖旧分支 - 但请记住,重写已发布历史记录是糟糕),您可以简单地重新创建合并,如果你还记得,他们是/应该在什么时候进行的:
签出第一个忘记/不存在/错过的合并:
git checkout -b new_master $commit_before_merge
合并旧的提交。如果您想要正确的合并消息(包括原始分支名称),您可能需要临时重新创建旧分支,或者手动编辑消息。
git merge $head_commit_of_old_branch
然后您必须使用cherry-pick 或rebase 将提交从原始主分支复制到新的“合并”分支。 (带有提交范围的 Cherry-pick 需要最新版本的 Git)
git cherry-pick $commit_before_merge..$commit_before_next_merge
返回第 2 步并重复,直到您对历史感到满意为止。
注意。首先在本地克隆中进行备份和测试。
【讨论】: