我使用以下方法创建新分支master:
master
git checkout -b testbranch
我做了 20 次提交。
现在我想压缩这 20 个提交。我这样做:
git rebase -i HEAD~20
如果我不知道提交了多少次怎么办?有没有办法做类似的事情:
git rebase -i all on this branch
压缩所有提交的另一种方法是将索引重置为 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 branch --show-current
编辑:您将需要使用git push --force
git push --force
Karlotcha Hoa在评论中补充道:
对于重置,您可以执行 git reset $(git merge-base master $(git rev-parse --abbrev-ref HEAD)) [That] 自动使用您当前所在的分支。 如果你使用它, 你也可以使用别名,因为该命令不依赖于分支名称 。
对于重置,您可以执行
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))
由于我的默认分支被调用main并且我的搜索多次将我带到这里: 为了下次复制它
main
git reset $(git merge-base main $(git rev-parse --abbrev-ref HEAD))