当我在分支机构中工作以获得新功能时,我发现自己经常处于这样的情况:我想从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^
我想要比这更顺畅的东西,特别是没有额外的结账。有什么建议吗?
答案 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
),第一个除外。保存并退出。提交将被压缩,编辑器将再次显示以编辑提交消息。
推上主人。