我有以下情况:
master
; x
的主题分支master
; master
,我也想在x
中提供此功能。我的理解是,我必须在x
上重新master
。这就是我的所作所为:
x
分行:VCS -> Git -> Branches -> Local branches -> x -> Checkout
; VCS -> Git -> Rebase -> Select master in onto
。此时出现错误,告诉我检查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
上重新分支我的分支?
答案 0 :(得分:1)
发生错误是因为您有未分级的更改,存储它们或提交它们将允许您执行rebase命令。
但是,我认为你在这里所做的是完全错误的。
首先,您不应该在主分支上提交,您应该在主题分支上提交并将其与/在主分支上合并/重新绑定。
第二,根据你想要做的事情,它是在x上重新定位主人,而不是在主人身上重新定义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,关于主题的反思主人
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,关于主人的反对主题
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章
中找到这些详细信息