为什么会用“git merge”
我知道“我们的”合并策略(听取合并报价)实际上不使用来自其他分支的任何提交。
“我们”的战略有时被称为“保持对方的历史”。 但它将该历史记录为“应用”。 奇怪的。 有没有我想要这种行为的情况?
作为替代方案,您也可以导入其他分支并让其历史记录在其所属的位置。
请注意,我正在询问“-s我们”的策略,而不是“-x我们的”选项来“-s递归”(不同之处在于它应用那些不冲突的提交)。
一种用法是“跳过”在维护分支上提交的提交,该提交不打算返回到您的主/主分支的开发中。 有关示例,请参阅此前面的问题:git - 在合并时跳过特定的提交
我在用于跟踪其他分支的其他分支中使用此伪合并,包括被遗弃的分支。 这个额外的分支实际上只有一个文件(称为branches-list
),其中包含活动和非活动分支的文本列表,但是在重要的点(主要是分支点和“分支结束”),合并或放弃)开发分支合并(与“我们的”)到这个分支。
这里是我们项目的最新截图:
因此,我最后从主人elo-test
分支了elo-test
,然后从这里我为我的问题在这里分支stroke-transform-example
(和答案 - 尽管这应该是两个不同的提交)。 在每个这样的分支点上,更重要的是,在分支结束而没有合并到某个其他分支的每个点上(我将在下一次清理时碰巧发生在stroke-transform-example
),我现在将这个分支合并到-s ours
的元branches
。
然后,我可以稍后删除不再使用的分支而不会丢失它们的历史记录,所以git branch -a
的输出总是很小。 如果我然后想回头看看我做了什么,那么我很容易找到它们。
(我认为这并不是真正的选择,但它工作得很好。)
另一个原因是当你有一个与你的活动分支非常不同步的分支,并且你希望用活动分支更新旧分支时,但是可能的合并冲突会妨碍这种通过正常合并轻松完成。
例如,我的用例是:
你有一个master和dev分支,出于某种原因,你几个星期没有更新你的master分支,而你试图将你的dev分支合并到master现在会导致合并冲突。 你可能想要做的是用你的开发分支的当前状态覆盖你的主分支,因此使它们同步。
在这种情况下你可以做的事情如下,使用另一个SO用户在另一个SO回答中列出的步骤。 但请参阅下面的警告说明 。
git checkout dev
git merge -s ours master
git checkout master
git merge dev
值得一提的是:最后,我的主人与我的开发人员保持同步,但开发人员显示4次提交被推送到遥控器,这很奇怪。 应该有0推,因为我只是想更新主。 尽管如此,代码看起来很好。 值得注意的是,因为我从来没有用过git merge -s ours
这是我自己,所以我没有100%的使用它。
我还发现使用ours
另一个答案可能对人有用:https://stackoverflow.com/a/13307342/339803