git rebase i vs git rebase --onto

时间:2013-08-23 19:39:54

标签: git git-rebase

我想我犯了一个错误。我想删除一些提交,所以我使用了git rebase -i并删除了最后一次提交。但随后它删除了我在工作目录和舞台上所做的所有更改。怎么会这样?我知道如果我删除了一些较旧的提交,我就不会遇到这个问题。有没有办法删除最后一次提交并在工作目录中保留更改?

顺便说一句,使用git rebase -igit rebase --onto <branch name>~<first commit number to remove> <branch name>~<first commit to be kept> <branch name>之间的区别是什么?

1 个答案:

答案 0 :(得分:1)

如果您对已知文件进行了未提交的更改,则

git rebase将无法启动。这个错误会失败:

Cannot rebase: Your index contains uncommitted changes.

该错误的一些变体自2007年以来一直存在。你是如何推出git rebase -i的?

写完后,您的问题与git rebase -i的默认值有关。如果没有任何参数,它将默认为签出分支,并尝试将其重新绑定到配置为您已签出的分支的“上游”的<remote>/<branch>。您可以检查分支的上游存储库并分支:

git config branch.<branch_name>.remote
git config branch.<branch_name>.merge