在我几次压缩Git提交的过程中,我花了一些手工工作来选择之前我想要压缩的提交。
是否有一些方法可以自动做到这一点-我的目标是压缩所有以前尚未推送到特定远程分支的提交。
更详细地说,假设我有1个名为"dev"的本地分支和2个远程,公共和私有。我将所有想要的提交并推送到私有远程,到一个名为"dev"的分支,我们称其为private/dev
。但是在公共远程上,我想保持东西的整洁,并保留一个称为"master"的标准分支,我们称之为public/master
。所以就像我说的,对于所有还没有提交到公共远程主分支的提交,我想把它们压缩成一个大的提交,并推送到public/master
我怎么才能做到呢?看起来复杂。
您只需通过public/master
创建一个临时分支(public
是您的公共远程的名称,master
—例如—是目标分支)
使用merge --squash
(参见"在git中,merge --squash
和rebase
有什么区别?")
git checkout -b temp public/master
git merge --squash dev
# since merge --squash does not produce a commit:
git commit -m "squash dev"
git push public temp:master
git checkout dev
git branch -d temp
关于冒号语法,请参见"git push branch to a new repo with a different name"和git push
的示例部分。
它允许将本地分支推送到具有不同名称的远程分支。