Git:如何挤压分支上的所有提交
我使用以下方法创build新分支:
git checkout -b testbranch
我做了20个提交。
现在我想压缩这20个提交。 我这样做:
git rebase -i HEAD~20
如果我不知道有多less提交,那么呢? 有没有办法做这样的事情:
git rebase -i all on this branch
压缩所有提交的另一种方法是将索引重置为master:
git checkout yourBranch git reset $(git merge-base master yourBranch) git add -A git commit -m "one commit on yourBranch"
这并不完美,因为这意味着你知道“yourBranch”是从哪个分支出来的。
注意:发现原始分支不容易/可能与Git ( 视觉方式往往是最简单的 ,如这里所见 )。
你在做什么很容易出错。 做就是了:
git rebase -i master
这将只会自动分配您的分支提交到当前最新的主。
另一个简单的方法来做到这一点:去原点分支,并做一个merge --squash
。 这个命令不会执行“squased”提交。 当你这样做,你的分支的所有提交信息将被收集。
$ git checkout master $ git merge --squash yourBranch $ git commit # all commit messages of yourBranch in one, really useful > [status 5007e77] Squashed commit of the following: ...
基于阅读几个Stackoverflow问题和压扁的答案,我认为这是一个很好的一行,以压扁分支上的所有提交:
git reset --soft $(git merge-base master YOUR_BRANCH) && git commit -am "YOUR COMMIT MESSAGE" && git rebase -i master
这是假设主人是基地分支。