Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不添加历史记录的情况下将Git分支标记为已合并(Git merge-s ours-squash)_Git - Fatal编程技术网

如何在不添加历史记录的情况下将Git分支标记为已合并(Git merge-s ours-squash)

如何在不添加历史记录的情况下将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

我有两个分支,它们实际上包含相同的文件,但由于遗留原因,它们是分开的。叫他们A和B

如果我运行
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)