如何最好地压制旧的提交

问题描述 投票:11回答:2

最近离开的一位开发人员在几个月前的回购中留下了大量的提交,就像“更新”一样。理想情况下,我想将它们压缩成一个提交,但我只是为最近的提交做了这个。

我将如何做以下提交(假设从2个月前意味着有数百个)?

....从2个月前

aabbcc updated
aabbdd updated
aabbee updated
aabbff updated

不想/需要任何花哨的东西,只是一个简单的解决方案。这些提交尚未公开分享(除了我今天以外),因此不会扰乱其他人的提交历史。

git git-squash
2个回答
3
投票

为了做一个git squash,请按照以下步骤操作:

// X is the number of commits you wish to squash
git rebase -i HEAD~X

一旦你压缩你的提交 - 选择s for squash =它会将所有提交合并为一个提交。

enter image description here


如果需要,您还可以使用--root标志

尝试:git rebase -i --root

- 根

Rebase all commits reachable from <branch>, instead of limiting them with
an <upstream>.

This allows you to rebase the root commit(s) on a branch.  
When used with --onto, it will skip changes already contained in `<newbase>`   
(instead of `<upstream>`) whereas without --onto it will operate on every 
change. When used together with both --onto and --preserve-merges, all root 
commits will be rewritten to have `<newbase>` as parent instead.`

2
投票

提交的时代并不重要,压缩提交正在压缩提交。

如果rebasing不适合你,或者你想要压缩成千上万的提交并且不能被它打扰,你可以轻轻地重置为第一个提交哈希并重新提交所有内容:

$ git reset aabbff 
$ git commit -m "This commit now contains everything from the tip until aabbff"

那么你只需要一次提交,就像rebase - > squash一样。

© www.soinside.com 2019 - 2024. All rights reserved.