繁体   English   中英

如何创建一个兄弟分支,其中包括从另一个分支到一个节点的所有提交?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM