如何使用最少的步骤压缩当前Git分支上的提交?

时间:2014-08-08 21:06:52

标签: git workflow

当我在分支机构中工作以获得新功能时,我发现自己经常处于这样的情况:我想从master重新分支我的分支,并将我的所有提交压缩到一个提交。我还没有找到一个顺利的方法来做到这一点。通常它涉及以下的一些组合:

# checkout master
git checkout master
git pull

# merge-squash my changes onto that
git merge --squash my-feature-branch

# force my branch to the squashed commit
git checkout my-feature-branch
git reset --hard master

# put master back to the way it was
git checkout master
git reset --hard HEAD^

我想要比这更顺畅的东西,特别是没有额外的结账。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您拥有的一个选项是简单地使用软重置。这相对于交互式rebase的优势在于它可以有效地为任意数量的提交进行压缩(甚至数百或数千):

git checkout feature
git reset --soft <commit-where-you-branched-off-master>
git commit -m "Your message here"
git rebase master

答案 1 :(得分:1)

git rebase -i remote/master

然后将所有pick替换为squash(或仅s),第一个除外。保存并退出。提交将被压缩,编辑器将再次显示以编辑提交消息。 推上主人。