TortoiseGit を使用して、リモートオリジンのリポジトリを操作しています。ある変更の途中で別の作業を行うために頻繁に停止する必要があるため、スタッシュ機能を使用して、保留中の開発を封鎖し、より即時の変更を行い、それらをコミットし、プッシュしてから、スタッシュに戻ります。
時間が経つにつれて、これはいくつかの隠し変更をもたらしました。私はそれらすべてを一度に取り除こうとしていました。
最初のいくつかのスタッシュ ポップは問題なく機能しました。スタッシュ ポップ、コミット、および繰り返しを行いました。ただし、最後のものの 1 つで、「Stash POP Fail!!!」というエラー メッセージが表示されました。(OMG! 3 つの感嘆符!!!) エラーの下のテキストは、ポップしようとしたファイルの 1 つにマージの競合があることを示していました。
プル後に競合が発生した場合と同じようにしました。競合しているファイルを編集して問題を修正し、競合を解決したことを git に伝え、最後に変更をコミットしました。
しかし、別の stash pop を実行すると同じエラーが発生し、違いを解決しようとすると、git が以前と同じ変更を stash から取得しようとしていたことがわかりました。もう一度競合を解決してコミットしようとしたとき、git は何も変更されていないことを通知したため、コミットするものは何もありませんでした。
最終的に、この問題を乗り越えるために (そしてさらに下の隠し場所にたどり着くために)、私はこのやや似た問題を SOで見つけ、受け入れられた回答の一番下にあるアドバイスをずっと受けました。git bash プロンプトを開きgit stash drop
、問題の原因となっている stash を削除しました。
私の質問は次のとおりです。
- これが問題を解決する最善の方法ですか、それともより直感的な方法がありますか? 理想的には、隠した変更を破棄しようとしているのを心配させない方法ですか?
- これが最善の方法である場合、TortoiseGit でスタッシュ ドロップを行う方法はありますか? マージ/破棄している違いを示す GUI ツールがあることに感謝しているので、git を使用してコマンドラインに戻らないようにしてください。