Gitスタッシュポップを破棄


133

私はgit stash popをしましたが、今ではたくさんの衝突があります。の前にすべての最近のコードをコミットしていたgit stash popので、最後のコミットに戻ってすべての競合を解消し、git stash pop挿入されたコードを取り除く方法はありますか?


ポップした作業を保存したいですか、それとも二度と見たくないですか?
jscs 2013年

1
いいえ、Poppedの動作は必要ありません。私は4か月前のように隠し場所を作りましたが、そこに何があるかわかりませんか?
jdog 2013年

2
隠しておく前にコミットされなかったものに関心がありますか?
Andrew Marshall

4か月前のものか、今日のものか?1時間前のものが欲しい。
jdog 2013年

5
競合がある場合git stash、gitはスタッシュをリストから削除しません。だからgit reset --hard HEADポップされた作品を破壊しません。
jwadsa​​ck

回答:


189

これはすでにstackoverflowで尋ねられて答えられていますが(Gitリポジトリを以前のコミットに戻す方法を参照してください)、簡単な答えは次のとおりです:

git reset --hard HEAD

これで問題が解決します。これにより、コミットされていないすべての変更がリポジトリから削除されることに注意してください。

競合がある場合、隠し場所は保持されることに注意してください。stash docsから:

状態の適用は競合で失敗する可能性があります。この場合、スタッシュリストからは削除されません。競合をgit stash drop手動で解決し、後で手動で呼び出す必要があります。


1
これにより、ローカルリポジトリが最後のコミットに戻ります。すべてのコミットを(最後のプッシュ以降)問題なくプッシュできるはずです。うまくいかない場合は、結果を前の質問に投稿してください)。幸運を。
MichaelMilom 2013年

28
しかし、これはあなたの隠し場所をなくします
K. Weber

19
@ K.Weberがgit stash pop原因で競合が発生した場合、スタッシュはスタッシュリストから削除されません。
Daiwei、2016年

1
誰が「実際にはあなたの隠し場所を失うことはない」と賛成しているのかはわかりませんが、私は私のものを失っただけです
アンソニー

4
コミットされていない変更失われることを指摘しているため、解決策はあまりありません。
Ivan P

4

特定のファイルでリセットを呼び出すこともできます:

git reset HEAD <filename>...

ただし、ファイルをハードリセットすることはできません。ただし、後でチェックアウトして変更を元に戻すことができます。

git checkout -- <filename>...

MichaelMilomの回答でルークが指摘したように、あなたは隠されます。

これは、コミットされていないローカル変更を失いたくない場合に便利です。


0

ポップされたスタッシュで作業を再び表示したくない場合は、ハードリセットと同じくらい簡単です。

git reset --hard HEAD

これは、作業ディレクトリでコミットされていない変更があるという事実を無視するようにgitに指示し、作業ディレクトリ、ステージング領域を設定し、指定したコミット(この場合は、既存のHEAD)に移動します。コミットしました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.