我能否使用rebase压缩一个本地的feature/topic分支的一系列提交,而不包括最近的提交?这是为了准备在合并和推送到公共仓库之前的提交。
我快速地进行了工作,并进行了许多标题和描述不好的小更改,我想将它们压缩成两到三个逻辑提交并添加良好的注释。我可以选择一个范围的提交,从329aed9到af39283,这些提交可能在此功能分支的短历史中的任何位置。
git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID
谢谢!我能否使用rebase压缩一个本地的feature/topic分支的一系列提交,而不包括最近的提交?这是为了准备在合并和推送到公共仓库之前的提交。
我快速地进行了工作,并进行了许多标题和描述不好的小更改,我想将它们压缩成两到三个逻辑提交并添加良好的注释。我可以选择一个范围的提交,从329aed9到af39283,这些提交可能在此功能分支的短历史中的任何位置。
git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID
谢谢!您可以使用git checkout -b new_branch af39283
创建新分支,然后进行变基。但是,如果您想在将来的某个时间点包括稍后的提交,则无法避免将它们重新变基。提交的SHA1取决于所有祖先提交。
rebase -i
时弹出的提交列表中,你只需要将前几个压缩提交的pick
更改为reword
,选择其他所有内容的squash
,并将未更改的提交保留为pick
。 - Karl Bielefeldtrebase -i
时,你可以在不必对最后一个提交做任何事情的情况下压缩/重新排序/重新命名/修复/删除之前的提交。当然,你正在重写它下面的历史记录,因此它的差异将被重新应用,并且在重新基础之后,它将成为一个不同的提交对象,但是由于你还没有公开推送这个提交(而且你正在重写其余部分),这应该不会有太大影响。