1. ホーム
  2. git

[解決済み] Gitの隠し場所。「ダーティな作業ツリーには適用できません。

2022-06-06 18:26:04

質問

私は、以前 git stash pop というメッセージが表示されます。

Cannot apply to a dirty working tree, please stage your changes

何か対処法があれば教えてください。

どのように解決するのですか?

隠した変更をダーティな作業コピーに適用する必要があるとき、たとえば、隠し場所から複数のチェンジセットをポップする場合、私は次のようにします。

$ git stash show -p | git apply -3 && git stash drop

基本的には

  1. パッチを作成する
  2. それを apply コマンドにパイプします。
  3. もし衝突があれば、3 者間マージで解決する必要があります。
  4. 適用(またはマージ)が成功した場合、適用されたばかりのスタッシュアイテムをドロップします...

なぜか -f (強制) オプションがないのはなぜでしょう。 git stash pop というオプションがあり、まさに上のワンライナーのように動作するはずです。

とりあえず、このワンライナーをgitのエイリアスとして追加しておくとよいでしょう。

$ git config --global --replace-all alias.unstash \
   '!git stash show -p | git apply -3 && git stash drop'
$ git unstash


を指摘してくれた @SamHasler に感謝します。 -3 パラメータを指摘してくれたことに感謝します。このパラメータを使用すると、3 者間マージを使用して直接コンフリクトを解決できます。