小编典典

Git:如何压缩分支上的所有提交

all

我使用以下方法创建新分支master

git checkout -b testbranch

我做了 20 次提交。

现在我想压缩这 20 个提交。我这样做:

git rebase -i HEAD~20

如果我不知道提交了多少次怎么办?有没有办法做类似的事情:

git rebase -i all on this branch

阅读 162

收藏
2022-03-08

共1个答案

小编典典

压缩所有提交的另一种方法是将索引重置为 master:

git checkout yourBranch
git reset $(git merge-base master $(git branch --show-current))
git add -A
git commit -m "one commit on yourBranch"

这并不完美,因为它意味着您知道“yourBranch”来自哪个分支。注意:使用Git
发现 origin分支并不容易/不可能(视觉方式通常是最简单的)。

注意:git branch --show-current已在Git 2.22 (Q1 20219)中引入。


编辑:您将需要使用git push --force


Karlotcha Hoa在评论中补充道:

对于重置,您可以执行

git reset $(git merge-base master $(git rev-parse --abbrev-ref HEAD))

[That] 自动使用您当前所在的分支。
如果你使用它, 你也可以使用别名,因为该命令不依赖于分支名称


sschoof在评论中添加:

由于我的默认分支被调用main并且我的搜索多次将我带到这里:
为了下次复制它

git reset $(git merge-base main $(git rev-parse --abbrev-ref HEAD))
2022-03-08