我有一个项目,我是唯一的开发人员,具有开发和主分支。每当我将开发合并为master时,我都会得到一个额外的合并提交。我认为这是因为出于某种原因它没有进行FF合并。但是,develop和master分支中的代码是相同的。我将添加一个新功能来开发分支,通常是一次提交,然后在测试后将其合并到master。每次我得到这些额外的提交时(这也使开发分支看起来像master后面的15个提交)。
我还有其他一些项目正在以相同的方式运行,但是我并没有获得更多的承诺。因此,看来我已经对该项目做了一些事情,以使其每次都创建这些额外的合并提交。知道如何停止获取这些额外的提交吗?除了炸掉develop分支并从当前的master重新创建之外,我已经做了所有事情。
奖金问题,是否可以通过本质上删除合并提交而不挤压或删除伴随它们的其他提交来清理历史记录?我曾经考虑过吹掉MASTER分支,然后再从develop中创建它(因为它没有多余的提交),但是我不确定那是个好主意。
答案 0 :(得分:1)
您需要使用rebase命令。
如果您希望分支的历史记录看起来呈线性,那么您要做的是:
git commit -m "FeatureX on Dev"
git fetch origin master:master
,git rebase master
git checkout master
,git rebase Development
,git push -f
PS: Rebase
很危险,因为它会重写分支的历史记录(上述步骤2和4),除非:
对于两者,你都应该很好。
特定于Azure开发:
在回购->提交下,如果您单击过滤器图标并选择“第一父级”,它将自动隐藏合并。尝试看看Github是否具有相同的内容?
答案 1 :(得分:1)
如果master
是基于develop
的,则只能将develop
快进到master
(通过从提交develop
返回指向应该有可能达到提交master
所指向的位置。)
看图片,很可能master
指向28b73893
,但是develop
仍然在aeb743f1
。如果您在develop
中进行提交,则无法进行快进。
要解决此问题,请将master
合并回develop
。。这将是一种快速转发的合并。之后,master
和develop
将指向同一提交;并且可以在一个分支中进行提交,而在另一分支中进行快速转发。