だから、たくさんの変更といくつかの追跡されていないファイルがありました。私は何かを微調整する必要があったので、git stash -u
、いくつかの変更を加え、それらの変更をコミットし、プッシュしてから、git stash pop
。
隠しておいたファイルをいくつか修正したため、次のメッセージが表示されました。
error: Your local changes to the following files would be overwritten by merge:
file_1.py
file_2.py
Please, commit your changes or stash them before you can merge.
Aborting
これは奇妙に思えます。すべての新しい変更をコミットしました。コマンドを実行したときのチェックアウトはきれいでした。
git stash pop
操作は変更と追跡されていないファイルの半分を隠していないが、試してみるとgit stash pop
再度、次のような出力が得られます。
some_file.html already exists, no checkout
some_other_file.html already exists, no checkout
yet_another_file.html already exists, no checkout
Could not restore untracked files from stash
git stash show
はまだ隠された変更のリストを表示しますが、私が今何をしているのか迷っています。
どうすれば自分を解き放つことができますか?
これを回避したのは、作業ディレクトリがクリーンで最新だったため、何らかのバグだったに違いないと思います。
git checkout .
それとその後 git stash apply
は問題なく動作し、すべて問題なく戻ってきました。しかし、実際に失敗した原因を突き止めたいと思います。
do have未コミットの作品で、その作品を失うことなくスタッシュをポップしたい人のために、ここに方法があります(@iFreilichtに感謝):
コミットされていない変更を一時的にステージングします。
git add -u .
これで、gitに文句を言わずにスタッシュを適用できます(うまくいけば):
git stash pop
すべてのステージングを解除しますが、ファイルはそのままにしておきます。
git reset
-u
で作成された隠し場所は、apply
- ed(およびpop
はapply
+ drop
)。
一般的なパラノイアから、mv
追跡されていないファイルを安全な場所に置いてから、git stash apply
、すべてを注意深くチェックし、git stash drop
がすべて正しいと確信したら。 :-)