纠正Git中的旧合并混乱

Mri*_*lla 2 git git-merge

我们使用Git很小,所有人都是新手.在这个月,我们已经使用Git和开始与功能分支试验和释放分支机构或两个,我们遇到了一点面条事件这样一个引起的合并冲突等:

在此输入图像描述

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

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

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

谢谢.

Mar*_*air 5

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

git checkout master
git rebase A
Run Code Online (Sandbox Code Playgroud)

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

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

  • 鼓励人们使用 git pull --rebase
  • 告诉人们使用branch.<name>.rebasebranch.autosetuprebase配置选项,这样他们就不会忘记添加--rebase
  • 向服务器添加一个拒绝推送非线性历史记录的钩子

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

  • 如果它有500多个提交,这只是众多例子中的一个,我只是保留原样并使用Mark的一些想法来防止它在未来发生...重写公共历史通常不是一个好主意. .. (2认同)