如何在不添加历史记录的情况下将Git分支标记为已合并(Git merge-s ours-squash)
我有两个分支,它们实际上包含相同的文件,但由于遗留原因,它们是分开的。叫他们A和B 如果我运行如何在不添加历史记录的情况下将Git分支标记为已合并(Git merge-s ours-squash),git,Git,我有两个分支,它们实际上包含相同的文件,但由于遗留原因,它们是分开的。叫他们A和B 如果我运行git log--oneline A^Bgit输出114个提交,这是预期的 然后,我可以在分支B上运行git merge-s-ours——允许不相关的历史记录A,它向git指示A已经合并到B中,而无需对结束文件状态进行任何更改。这是可行的,除了B现在接收这114个提交作为其历史记录的一部分(git log) 我怎样才能在不引入A全部历史的情况下将A标记为合并到B 我尝试了git merge--squas
git log--oneline A^B
git输出114个提交,这是预期的
然后,我可以在分支B上运行git merge-s-ours——允许不相关的历史记录A
,它向git指示A已经合并到B中,而无需对结束文件状态进行任何更改。这是可行的,除了B现在接收这114个提交作为其历史记录的一部分(git log
)
我怎样才能在不引入A全部历史的情况下将A标记为合并到B
我尝试了git merge--squash-s ours--A
后接git commit
,但没有任何效果
从概念上讲,压缩-s-ours
提交应该会给我想要的东西,但它不起作用
我怎样才能在不引入A全部历史的情况下将A标记为合并到B
你不能。当git
说A
合并到B
时,这意味着A
s历史可以从B
访问
您可以使用git log--first parent
来避免跟踪合并的历史记录(如果这不会忽略其他合并提交时需要的其他历史记录)
您可以完全放弃分支A
。(如果您不想让它显示为未合并的分支,也不想看到它的历史,那么您想要它做什么?)
如果您确实想存档A
的历史记录,但通常不想看到它,您可以将其迁移到通常看不到它的存档repo,或者将分支
替换为标记
(因为如果只是存档,就没有理由继续推进A
ref),然后至少它不是一个“未合并的分支”
我想有点额外的背景。。。“挤压合并”在这里不起作用的原因是它根本不产生合并。给定
... x -- x -- A <--(A)
... x -- x -- B <--(B)
。。。这有帮助吗@wotanii没有,但我已经编辑了我的问题,包括——允许无关的历史。我明白了,我误解了壁球合并的作用。
... x -- x -- A <--(A)
\
... x -- x -- B -- M <--(B)
... x -- x -- A <--(A)
... x -- x -- B -- M <--(B)