如何在一次射击中压扁/变形

问题描述 投票:-1回答:2

我怎样才能以最小的努力,将我的所有提交(甚至是合并和冲突解决方案)压缩到功能分支上的单个提交,然后在我开始开发的分支顶部进行重新绑定?不想重做已经完成的冲突解决方案。尽量减少麻烦。

假设我们谈论的分支是master和featureX。

git merge rebase git-reset squash
2个回答
-1
投票

我知道最简单的方法是

git checkout featureX
git merge -m "Bring latest changes from master" master
# magic starts here
git reset --soft master # put featureX branch pointer on top of master tip
# at this point all the changes related to featureX are on staging area
git commit -m "Feature X in a single shot"

你去吧没有变形,没有压力。


-2
投票

听起来你想要使用壁球合并。

git checkout master
git merge --squash featureX
git commit

这会将所有更改应用于master,就像您已合并(或重新定义)featureX一样,作为单个“非合并”提交。

这有几个原因。只需通过交互式变换就可以在一步中压缩和变基,但是(1)如果你要压缩每个中间提交,那么就没有必要这样做 - 在这种情况下,壁球合并是一个可行的捷径; (2)您注意到您正在合并的featureX历史中可能存在干预分支和合并; rebase不会轻易解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.