纠正Git中的旧合并混乱

时间:2011-09-01 12:38:44

标签: git git-merge

我们使用Git很小,我们所有人都是新手。在我们使用Git并开始尝试使用功能分支和发布分支的一两个月中,我们遇到了像合并冲突等引起的意外事件:

enter image description here

黑线是我的开发分支。忽略红色的那个。您将看到一个提交如何脱离该开发树然后合并回来。是否有可能通过压扁树木来清除这些旧的蜘蛛网?我的头现在距离此约有500多个提交。

我读过这可以通过变基而不是合并来避免。

尽管如此,这是一件微不足道的事情,但如果可能的话,我想解决这个问题,因为强迫症和清晰度都是如此。

感谢。

1 个答案:

答案 0 :(得分:5)

如果您真的想在主分支上提交A后线性化历史记录,您可以随时执行:

git checkout master
git rebase A

但是,这意味着您正在重写master分支的历史记录,因此,如果您(强制 - )推送此新版本,则必须向团队中的每个人介绍如何获取新版本并重置其主分支以匹配重写版本。否则,人们可能会拉动,这会将重写的分支与现有的分支合并,从而击败练习的对象。

这些小分歧通常发生在有人在其主分支上创建提交时,但服务器上的主服务器同时继续运行 - 这意味着当他们再次提取时,需要进行合并提交。您可以通过以下措施来避免这种情况:

  • 鼓励人们使用git pull --rebase
  • 告诉人们使用branch.<name>.rebasebranch.autosetuprebase配置选项,这样他们就不会忘记添加--rebase
  • refuses pushes of non-linear history
  • 的服务器添加挂钩

然而,我个人并不介意在历史上看到这些合并 - 有了一个好的历史观众,它仍然非常清楚发生了什么。