git - 撤消 IntelliJ 智能 checkout

标签 git intellij-idea version-control git-stash

IntelliJ 有一个理论上非常酷的功能,称为 Smart Checkout .当您更改分支并且当前分支中有您已修改但尚未提交的文件时,此功能会启动。

它不是强制您提交、存储或搁置您的更改,而是为您存储它们、切换分支,然后在新分支中运行 stash pop

我想这是你有时想要的,但我在切换到错误的分支时运行了它。

所以,现在我的 master 分支充满了属于另一个分支的更改,一些文件报告 merge 冲突,我有各种痛苦。

我想要完成的是:

  1. 从 master 分支中彻底删除更改。
  2. 将他们调回我工作的分支机构。

有办法吗?

最佳答案

如果您在 stash pop 期间发生 merge 冲突,这里至少有一个部分答案有效。正如我在问题中提到的,智能 checkout 功能使用 stash 来存储您的本地更改,然后在 checkout 后将它们应用到新分支。

IntelliJ 的做法是在您当前所在的分支中使用 stash,然后在您要切换到的分支中使用 stash pop

当更改被 stash 时,它们会被放入堆栈顶部的 stash 更改中。然后,当 stash pop 运行时,这些更改将从堆栈中 pop 并应用。

至少,在大多数情况下,会发生这种情况。但是,如果存在 merge 冲突,IntelliJ 会通知您并保留存储。您可以通过运行查看存储堆栈:

git stash list

如果你想要的存储仍然在列表中,你可以做的就是检查你原来所在的分支。重置它,然后执行 stash apply,这类似于 stash pop,但不会从列表中删除 stash。所以:

git checkout $original-branch
git reset HARD
git stash apply

然后,如果一切顺利,您可以删除存储:

git stash drop

由于这个答案非常粗略并且只涵盖一种情况,所以我将其标记为社区维基。非常欢迎改进。

关于git - 撤消 IntelliJ 智能 checkout ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32318824/

相关文章:

eclipse - 对于 eclipse 项目,哪些文件应该提交给 github

git - 如何重命名git根文件夹?

java - 如何在不更改操作系统用户名的情况下更改 IntelliJ IDEA 中的 ${USER} 变量?

groovy - 如何为现有的 IDEA 项目创建 Gradle 构建?

git - 你应该 fork 你自己的项目并提交 pull 请求吗?

git - 如何将 Selenium Grid 2 与 Hudson/Jenkins 集成?

r - GitHub 分支无缘无故与 master 同步

intellij-idea - IntelliJ中的Gradlebuild设置

visual-studio-2008 - 如何将svn与Visual Studio 2008集成?

git - 如何删除 GitHub 提交及其历史记录?