有点背景。
我的公司有一个很大的git仓库。我们在一个分支上做开发(希望是短命的),然后执行合并(不压制)到主干。不幸的是,现在我们有一个项目在自己的分支上生活了几个月。多个开发者为它做出了贡献,它有超过一百个提交。其中有几十个提交是从主干分支合并过来的,并且与我们自己的提交交错在一起。
现在我们想把所有这些代码都合并到主文件中--但是是以所有小提交的形式。我们想把它们压制住。然而,我们面临着来自DevOps的反对。合并是由工具自动完成的,而DevOps坚持认为git的 "压制和合并 "操作会导致问题。简而言之,他们不愿意为我们做任何压制和重构。我们完全可以接受失去所有的个人提交历史。但任何弄乱主文件的可能性(或引入错误的合并)都应该被消除。
如何才能在合并之前自动压制拉取请求中的提交?
我知道我们可以做 "git rebase",但这将是一个手动的过程,要检查所有100多个提交。容易出错。对我们来说不够好。
当运行 "git diff "时,我可以看到我们的分支和主分支之间的所有变化,漂亮而干净。有没有一种方法,可以将所有的修改
如果你想要的是一个单一的提交,将所有与主版本的差异作为一个单一的提交,你可以这样做。
git checkout the-branch
git merge master -m "get the latest from master"
# set our branch _pointer_ on master, do not change a comma from our working tree
git reset --soft master
# at this point, all the differences between master and the other branch are on index, ready to be committed
git commit -m "single commit with all changes"
然后你就完成了 你的分支是在主干上的单一提交,没有任何麻烦。