IntelliJ Git rebase错误

时间:2012-08-26 21:01:27

标签: git intellij-idea

我有以下情况:

  1. 分支master;
  2. x的主题分支master;
  3. 我已经提交了master,我也想在x中提供此功能。我的理解是,我必须在x上重新master
  4. 这就是我的所作所为:

    1. 结帐x分行:VCS -> Git -> Branches -> Local branches -> x -> Checkout;
    2. 转到VCS -> Git -> Rebase -> Select master in onto
    3. 点击Rebase。
    4. 此时出现错误,告诉我检查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上重新分支我的分支?

1 个答案:

答案 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章

中找到这些详细信息