IntelliJ 有一个理论上非常酷的功能,称为 Smart Checkout .当您更改分支并且当前分支中有您已修改但尚未提交的文件时,此功能会启动。
它不是强制您提交、存储或搁置您的更改,而是为您存储它们、切换分支,然后在新分支中运行 stash pop
。
我想这是你有时想要的,但我在切换到错误的分支时运行了它。
所以,现在我的 master
分支充满了属于另一个分支的更改,一些文件报告 merge 冲突,我有各种痛苦。
我想要完成的是:
- 从 master 分支中彻底删除更改。
- 将他们调回我工作的分支机构。
有办法吗?
最佳答案
如果您在 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/