发生错误是因为您有未暂存的更改,存储它们或提交它们将允许您执行 rebase 命令。
但是,我认为你在这里做的是完全错误的。
首先,您不应该在主分支上提交,您应该在主题分支上提交并将其与/在主分支上合并/变基。
其次,根据你想要做的,它是在 x 上重新定位 master,而不是在 master 上重新定位 x。
所以你应该
1, checkout master --> git checkout master
2, rebase on x --> git rebase x
3, do some merge job
4, continue the rebase --> git rebase --continue
顺便说一句,您应该阅读pro-git,它是免费的,而且是一本非常好的书。
编辑:
阅读您发布的网址后,我想我在这里有一些误解。
说你有这个:
$ git log --oneline --graph --decorate --all
* c85d8bd (HEAD, master) dev on master again
| * 431a9c6 (topic) dev on topic
|/
* 4ad2cc4 dev on master
* d576e88 init
在这里我们将尝试两个变基命令:
1、rebase master on topic
git checkout master
git rebase topic
这将使历史看起来像这样:
$ git log --oneline --graph --decorate --all
* 03021da (HEAD, master) dev on master again
* 431a9c6 (topic) dev on topic
* 4ad2cc4 dev on master
* d576e88 init
2、rebase topic on master
git checkout topic
git rebase master
你的历史将是这样的:
$ git log --oneline --graph --decorate --all
* adc93f1 (HEAD, topic) dev on topic
* c85d8bd (master) dev on master again
* 4ad2cc4 dev on master
* d576e88 init
这都是关于你想要谁在谁身上:)
我以这种方式记住这一点:
merge with <branch>
rebase on <branch>
但有一个例外,同时使用:
git rebase --onto
您可以在pro-git的第 3.6 章中找到这些详细信息