IntelliJ 有一个理论上非常酷的功能,称为智能结账 https://blog.jetbrains.com/idea/2012/03/simpler-and-more-powerful-ui-for-git-branches/。当您更改分支并且当前分支中有已修改但尚未提交的文件时,此功能就会启动。
它不会强迫您提交、存储或搁置您的更改,而是为您存储它们,切换分支,然后运行stash pop
在新的分行。
我想这有时是你想要的,但我在切换到错误的分支时运行了这个。
所以,现在我的master
分支充满了属于另一个分支的更改,一些文件报告合并冲突,我有各种各样的痛苦。
我想要完成的是:
- 从 master 分支中彻底删除更改。
- 将它们移回我工作的分支机构。
有没有办法做到这一点?
如果您在合并期间发生合并冲突,这至少是一个有效的部分答案stash pop
。正如我的问题中提到的,stash
智能签出功能使用它来存储本地更改,然后在签出后将它们应用到新分支。
IntelliJ 执行此操作的方法是使用stash
在您当前所在的分支中,然后使用stash pop
在您要切换到的分支中。
当更改被隐藏时,它们会被放入顶部的隐藏更改堆栈中。那么,当stash pop
运行时,这些更改将从堆栈中弹出并应用。
至少,在大多数情况下,情况就是这样。但是,如果存在合并冲突,IntelliJ 会通知您并保留存储。您可以通过运行以下命令查看存储堆栈:
git stash list
如果您想要的存储仍然列出,您可以做的就是简单地检查您原来所在的分支。重置它,然后执行stash apply
,就像stash pop
,但不会从列表中删除存储。所以:
git checkout $original-branch
git reset HARD
git stash apply
然后,如果一切顺利,您可以使用以下命令删除隐藏的内容:
git stash drop
由于这个答案非常粗略并且只涵盖一种情况,因此我将其标记为社区维基。非常欢迎改进。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)