如何每次都停止获取额外的合并提交

时间:2019-12-09 17:18:48

标签: git github visual-studio-code azure-devops

我有一个项目,我是唯一的开发人员,具有开发和主分支。每当我将开发合并为master时,我都会得到一个额外的合并提交。我认为这是因为出于某种原因它没有进行FF合并。但是,develop和master分支中的代码是相同的。我将添加一个新功能来开发分支,通常是一次提交,然后在测试后将其合并到master。每次我得到这些额外的提交时(这也使开发分支看起来像master后面的15个提交)。

我还有其他一些项目正在以相同的方式运行,但是我并没有获得更多的承诺。因此,看来我已经对该项目做了一些事情,以使其每次都创建这些额外的合并提交。知道如何停止获取这些额外的提交吗?除了炸掉develop分支并从当前的master重新创建之外,我已经做了所有事情。

奖金问题,是否可以通过本质上删除合并提交而不挤压或删除伴随它们的其他提交来清理历史记录?我曾经考虑过吹掉MASTER分支,然后再从develop中创建它(因为它没有多余的提交),但是我不确定那是个好主意。

enter image description here

2 个答案:

答案 0 :(得分:1)

您需要使用rebase命令。

如果您希望分支的历史记录看起来呈线性,那么您要做的是:

  • 致力于开发部门:git commit -m "FeatureX on Dev"
  • 使用最新的主服务器进行重新设置:git fetch origin master:mastergit rebase master
  • 测试您的代码
  • 开心吗?将master重新设定为Development并强制按下:git checkout mastergit rebase Developmentgit push -f

PS: Rebase很危险,因为它会重写分支的历史记录(上述步骤2和4),除非:

  • 您确切地知道自己在做什么
  • 没有其他人拉过古老的历史

对于两者,你都应该很好。

特定于Azure开发:

在回购->提交下,如果您单击过滤器图标并选择“第一父级”,它将自动隐藏合并。尝试看看Github是否具有相同的内容?

enter image description here

答案 1 :(得分:1)

如果master是基于develop的,则只能将develop快进到master(通过从提交develop返回指向应该有可能达到提交master所指向的位置。)

看图片,很可能master指向28b73893,但是develop仍然在aeb743f1。如果您在develop中进行提交,则无法进行快进。

要解决此问题,请将master合并回develop。这将是一种快速转发的合并。之后,masterdevelop将指向同一提交;并且可以在一个分支中进行提交,而在另一分支中进行快速转发。