如何为一系列提交git rebase -i?

时间:2011-10-13 17:41:25

标签: git commit git-branch rebase git-rebase

我可以使用不包含最新提交的rebase来压缩本地功能/主题分支的一系列提交吗?这是我想在合并并推送到公共仓库之前准备的提交。

我正在快速工作,并使用糟糕的标题和描述进行了一些小的更改,我希望将两个或三个单独的逻辑提交压缩成一个很棒的注释。我可以选择329aed9和af39283之间的一系列提交,这些提交可以在此功能分支的短历史中的任何一点吗?

git rebase -i RANGE_START_COMMIT_ID RANGE_LAST_COMMIT_ID

谢谢!

2 个答案:

答案 0 :(得分:11)

您总是可以使用git checkout -b new_branch af39283创建一个新分支,然后对其进行重新设置。但是,如果您希望在将来的某个时间段中包含后续提交,那么也无法对它们进行重新定位。提交的SHA1取决于它的所有祖先提交。

答案 1 :(得分:1)

所以,通过“不包括”最近的提交,你的意思并不完全清楚,但当你执行rebase -i时,你可以压缩/重新排序/重新编码/修复/删除之前的提交无需对上次提交做任何事情。当然,你正在重写它下面的历史,所以它的差异将被重新应用,并且它将在rebase之后成为一个不同的提交对象,但是因为你没有公开推送它(并且你正在重写其余部分) )这应该不重要。