git - IntelliJ Git rebase 错误

标签 git intellij-idea

我有以下情况:

  1. 一个分支master
  2. master 的主题分支 x
  3. 我已经向 master 做出了 promise ,并且我希望在 x 中也能使用它。据我了解,我必须在 master 上重新设置 x 的基础。

这就是我所做的:

  1. check out x 分支:VCS -> Git -> 分支 -> 本地分支 -> x -> check out
  2. 转到VCS -> Git -> Rebase -> 在onto中选择master
  3. 点击“ 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/

相关文章:

git - 在 Visual Studio 2015 中同步时使用 rebase

android - 开发 Android 应用程序的最佳 IDE 是什么?

git - 使用成功的 Git 分支模型支持多个版本

git - git如何存储重复文件?

c++ - 在CLion中测试Shell(.sh)文件

scala - 对于基本数据框创建示例,我应该如何在 Spark 中编写单元测试?

intellij-idea - Gradle:将源代码和 javadoc 附加到 IntelliJ Idea 中的本地文件

intellij-idea - 如何配置 IntelliJ IDEA 检查 "JUnit test method without any assertions"以与 jmockit 的验证一起使用?

bash - Git 哈希对象在 Powershell、CMD 和 Bash 中产生不同的 SHA1?

linux - 不小心添加了文件但后来添加了 git ignore