git merge --squash是否会导致交叉分支合并的麻烦

时间:2011-06-27 16:39:14

标签: git rebase squash

我正在一个正在成长并使用git的团队中工作。我们通常在自己的分支机构工作。

我从另一个工作库中删除了一些更改。最终,他的更改被添加到并使用squash提交合并到主分支中。

当我尝试从master获取并合并时,我遇到了大量冲突。我认为这是因为壁球合并以及它会混淆合并跟踪的事实。有一个简单的方法吗?

其次。如果开发人员正在处理多个分支,并且可能需要在进入master之前对其他每个分支进行更改,那么有一种方法可以在继续对master进行压缩提交时进行处理。

很多人都提到了Rebase。但我不知道这对多个根分支有什么作用?

2 个答案:

答案 0 :(得分:3)

是的,压榨对重复合并造成严重破坏。最好的建议是不要挤压 - 特别是,不要压制公开的东西。在与他人共享之前重写您自己的提交,但是一旦他们共享,他们应该保持原样,并定期进行合并提交。

通过使用git log --first-parent将合并分支的 log 压缩到合并提交,同时保留实际历史记录完好无损。

答案 1 :(得分:2)

我想补充说,当分支是公共的时,压缩只会造成破坏,如果一个开发人员在一个分支上进行本地工作,并且有一个混乱的提交,例如“哦,糟糕的再次打破了这个”,接着是“它的工作!”接着是“再次破坏它”,接着是“现在确定它”,很容易将这些(在被推送到远程仓库或共享之前)压缩到一个提交中,并提供有关代码中已更改内容的好消息。

一旦被推送到远程仓库,这看起来就像没有壁球创建的单个正常提交一样,好像开发人员正在使用天使进行编程,确保他所做的一切都是完美的,然后开发人员可以自由地在本地使用git进行增量变化,我觉得有用的是弄清楚我最近破解的代码。

我对事物的看法:壁球是本地工作流程的一个很好的工具,即一个开发者。一旦提交被共享,它就永远不会被压扁。