【发布时间】:2011-12-07 04:07:41
【问题描述】:
我可以使用 不包含最近提交的 rebase 来压缩本地功能/主题分支的一系列提交吗?这是针对我想要在它们被合并并推送到公共存储库之前准备的提交。
我工作得很快,做了一堆小的改动,标题和描述都很差,我想用一个很棒的 cmets 将它们压缩成两个或三个独立的逻辑提交。我可以选择 329aed9 和 af39283 之间的提交范围,这些提交可能会在此功能分支的短暂历史中的任何时间点出现吗?
git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID
谢谢!
【问题讨论】:
-
如果您使用 vim(Git 默认使用),您可以使用可视块模式 (ctrl-v) 一次将任意多个选择更改为 squashes。
-
谢谢杰弗罗米。我终于弄清楚了如何使用 vim 进行挑选和挤压。对于其他初学者,运行 'git rebase -i mybranch~5' 其中 5 是要处理的最近提交的数量。如果您希望提交保持原样,请将其前缀保留为“pick”。否则将其行前缀从“pick”更改为“squash”,rebase 会将每个“squash”提交压缩到其上方标有“pick”的第一个提交。如果您有 10 个提交,并且将三个作为“pick”,其余作为“squash”,那么在 rebase 后您将获得总共三个提交的结果。我将发布一个屏幕截图,展示它是如何工作的。
-
这不正是提交列表下方的帮助所说的吗?
-
是的,但是从帮助中可以看出,您可以使用 pick 来保持某些提交不变,同时在单个 rebase 中修改其他提交。至少这对我来说是一种脱节,希望这对其他人有所帮助。
标签: git commit git-branch rebase git-rebase