我有以下情况:
- 一个分支
master
; master
的主题分支x
;- 我已经向
master
做出了 promise ,并且我希望在x
中也能使用它。据我了解,我必须在master
上重新设置x
的基础。
这就是我所做的:
- check out
x
分支:VCS -> Git -> 分支 -> 本地分支 -> x -> check out
; - 转到
VCS -> Git -> Rebase -> 在onto中选择master
。 - 点击“ rebase ”。
此时出现错误,告诉我检查 VC 控制台以获取详细信息。这是控制台显示的内容:
23:59:22.839: git rebase -i -v -m refs/heads/master
Cannot rebase: You have unstaged changes.
Additionally, your index contains uncommitted changes.
Please commit or stash them.
任何地方的任何分支都没有待处理的更改。一切都已提交(如果有任何区别,则推送到 Bitbucket)。我这样做对吗?如何在 master
上重新建立我的分支?
最佳答案
发生错误是因为您有未暂存的更改,存储它们或提交它们将允许您执行 rebase 命令。
但是,我认为你在这里所做的事情是完全错误的。
首先,您不应该在主分支上提交,您应该在主题分支上提交并将其与主分支 merge/ rebase 。
第二,根据你想要做什么,它是在x上rebase master,而不是在master上rebase 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
在这里我们将尝试两个 rebase 命令:
1、rebase master主题
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、在master上rebase topic
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>
但是使用时有一个异常(exception):
git rebase --onto
您可以在 pro-git 中找到这些详细信息第3.6章
关于git - IntelliJ Git rebase 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133885/