ステージングされたファイルの作業ディレクトリ状態を HEAD 状態に戻し、同時にファイルのステージング状態を維持する git porcelain コマンドはありますか? 後で、作業ディレクトリの状態をファイルのステージング状態に戻せるようにしたいと考えています。私の最初の考えは を使用することgit checkout HEAD -- targetfile
でしたが、ファイルのステージング状態もリセットされます。これは で実行可能ですがgit stash
、他のファイルに影響を与えますが、1 つのファイルに焦点を当て、他のファイルの状態をそのまま保持したい場合は、マージの競合が発生する可能性があるため、次のようにします。
git add targetfile
git stash
... // modify tagetfile in seeking of different task solution, possibly modifying other files too
git checkout HEAD -- targetfile //drop the different solution attempt, keep other modified files if any
git stash apply --index // revert to the stashed staged solution, but produces merge conflict for other modified files
この質問で説明されているシナリオが欠けている、最後に要約表がある素晴らしい記事を見つけました。私の意見では、これは簡単に実現できるはずですが、ステージングされたディレクトリの状態と作業中のディレクトリの状態が非常に緊密に結合されていることに驚いています.ファイルの作業中の状態を維持しながらステージングされた状態をリセットすることはできますが、その逆を達成するのは難しい.