[英]How can I create a sibling branch that includes all the commits from another branch into one node?
我有一个分支mybranch,它具有六个提交,并源自提交C。我想创建一个同样基于提交C的新分支,该分支实际上包括mybranch中的所有提交,都被压缩为一个提交。 最简单的方法是什么?
由于“在您按git-push之前先压一下”的口号,我需要这样做。 对于新分支,我不想在推送到远程服务器的历史记录中提及mybranch 。 我想创建一个用于推送的全新分支的原因是,我想将所有提交保留在mybranch中以供参考。
为什么只推送压缩的提交? 这听起来很疯狂(而且是错误的)。
但是要回答你的问题:
git checkout -b newbranch # checkout new branch
git reset --soft C # move to commit C
git commit -m 'squashed commit'
另一种可能性是使用rebase -i
将所有提交压缩/修复为单个提交:
git checkout -b newbranch
git rebase -i C # now, replace every 'pick' with 'fixup'/'squash' except the first one
另一个有趣的是git merge --squash
:
产生工作树和索引状态,就像发生真正的合并一样(合并信息除外),但实际上不进行提交或移动HEAD,也不记录$ GIT_DIR / MERGE_HEAD导致下一个git commit命令创建合并承诺。 这使您可以在当前分支的顶部创建一个提交,其作用与合并另一个分支的作用相同(对于章鱼,则更多)。
git checkout -b newbranch C # create newbranch at commit C
git merge --squash mybranch
git commit -m 'squashed commit'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.