丢弃Git Stash Pop


133

我做了一个git stash pop,现在有很多冲突。我已经在之前提交了所有我最近的代码git stash pop,那么有没有办法回到上一次提交并摆脱所有冲突并编写git stash pop注入代码?


您是否仍要保存弹出的作品,还是不想再看到它?
jscs

1
不,我不要Popped的作品。我像4个月前那样进行藏匿,不知道里面还有什么?
jdog

2
您是否在担心藏匿之前未提交的内容?
安德鲁·马歇尔

是4个月前还是今天?我想要一个小时前的东西。
jdog

5
如果您之间有冲突,git stash则git不会从列表中删除隐藏项。因此git reset --hard HEAD不会破坏弹出的工作。
jwadsa​​ck 2014年

Answers:


189

已经在stackoverflow上对此问题进行了回答(请参阅如何将Git存储库还原为先前的提交?),但是简单的答案是:

git reset --hard HEAD

这应该解决您的问题。请注意,这将从存储库中删除所有未提交的更改。

请注意,如果存在冲突,则将保留隐藏项。从隐藏文档

应用状态可能会因冲突而失败;在这种情况下,它不会从存储列表中删除。您需要git stash drop手动解决冲突,然后手动致电。


1
这会将您的本地存储库还原为上一次提交。您应该能够推送所有提交(自上次推送以来),而不会出现问题。如果不起作用,则将结果发布回上一个问题。祝好运。
MichaelMilom

28
但是,这会使您的藏匿之处丢失
K. Weber

19
@ K.Weber如果git stash pop导致冲突,则不会从存储列表中删除该存储。

1
我不确定谁会赞成“实际上您不会丢掉自己的藏书”,我只是丢了我的票
安东尼

4
恕我直言,解决方案并没有太多,因为它指出您丢失未提交的更改。
伊万P

4

还可以在特定文件上调用Reset:

git reset HEAD <filename>...

不过,您无法硬重置文件。但是您可以随后通过checkout还原更改:

git checkout -- <filename>...

正如Luke在MichaelMilom答案中指出的那样,您的藏身之处将得到保留。

当您不想丢失未提交的本地更改时,这很有用。


0

如果您再也不想在弹出的储藏柜中看到工作了,那么这就像硬重置一样简单:

git reset --hard HEAD

这告诉git忽略工作目录中未提交更改的事实,并设置工作目录,暂存区域,并转到您指定的提交-在这种情况下,是现有的HEAD,其中包含您所有的工作刚刚承诺。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.