git stash pop が、追跡されていないファイルを stash エントリから復元できないと表示するのはなぜですか? 質問する

git stash pop が、追跡されていないファイルを stash エントリから復元できないと表示するのはなぜですか? 質問する

ステージングされた変更とステージングされていない変更が多数あったので、すぐに別のブランチに切り替えてから元に戻したいと考えていました。

そこで私は、次のように変更を段階的に実行しました。

$ git stash push -a

(後から考えてみると、--include-untrackedの代わりにを使うこともできたかもしれません--all

その後、スタッシュをポップしようとすると、次のようなエラーが大量に発生します。

$ git stash pop
foo.txt already exists, no checkout
bar.txt already exists, no checkout
...
Could not restore untracked files from stash entry

スタッシュから復元された変更はないようです。

私も試してみました$ git stash branch tempが、同じエラーが表示されます。

私はこれを回避する方法を見つけました。それは次のものです:

$ git stash show -p | git apply

今のところ災害は回避されましたが、いくつかの疑問が生じています。

そもそもなぜこのエラーが発生したのでしょうか。また、次回はどのように回避すればよいのでしょうか。

ベストアンサー1

問題を再現できました。追跡されていないファイルをスタッシュしてからそれらのファイルを作成すると (例ではfoo.txtbar.txt)、追跡されていないファイルへのローカルの変更が を適用すると上書きされてしまうようですgit stash pop

この問題を回避するには、次のコマンドを使用します。保存されていないローカルの変更を上書きするので注意してください。

git checkout stash -- .

前回のコマンドで見つけた追加情報は次のとおりです

おすすめ記事