我执行了git stash pop
,现在有很多冲突。在执行git stash pop
前我已经提交过所有最近的代码了,那么有没有一种方法可以回到上一个提交状态并且消除掉所有由git stash pop
引入的冲突和代码呢?
我执行了git stash pop
,现在有很多冲突。在执行git stash pop
前我已经提交过所有最近的代码了,那么有没有一种方法可以回到上一个提交状态并且消除掉所有由git stash pop
引入的冲突和代码呢?
这个问题已经在stackoverflow上得到了回答(参见如何将Git仓库还原到以前的提交?),但简单答案是:
git reset --hard HEAD
这应该解决你的问题。请注意,这将从存储库中删除所有未提交的更改。
请注意,如果存在冲突,则保留存储。来自存储文档:
应用状态可能会因冲突而失败;在这种情况下,它不会从存储清单中删除。您需要手动解决冲突,然后再手动调用
git stash drop
。
git stash pop
引起冲突,那么这个储藏的内容将不会从储藏列表中删除。 - Daiwei重置同样可以针对特定文件进行调用:
git reset HEAD <filename>...
git checkout -- <filename>...
正如MichaelMilom的回答中Luke所指出的那样,您的存储库将被保留。
当您不想丢失未提交的本地更改时,这非常有用。
如果你不希望再看到弹出的存储区中的工作,那么最简单的方法就是硬重置:
git reset --hard HEAD
这告诉 Git 忽略你的工作目录中未提交的更改,并将工作目录、暂存区和 HEAD 设置为你指定的提交 -- 在这种情况下,是包含你刚刚提交的所有工作的现有 HEAD。
git stash
命令时发生冲突,Git 将不会将这个储藏从列表中删除。因此,运行git reset --hard HEAD
命令不会销毁弹出的工作。 - jwadsack