「ブランチのチェックアウト間でgit--assume-unchangedファイルを保持する」を参照してください。
git update-index --skip-worktree -- path
それはから戻されませんgit stash
。
元の回答
「一時的にファイルを無視する」から:
git update-index --assume-unchanged <file>
これにより、その特定のファイルへの変更を無視できます。ただし、構成の変更を同じファイルに保持しながら
コードの変更を元に戻したい場合は、これは役に立ちません。
そして、git stashはそれを元に戻します:git stashが「変更されていないと仮定する」ビットを使用してファイルへの変更をドロップしないようにするにはどうすればよいですか?
Git 2.25(2020年第1四半期)より前git stash
は、対象領域外の誤って削除されたパスがまばらにチェックアウトされている作業ツリーに「保存」することに注意してください。
Johannes Schindelin()によるcommit 4a58c3d、commit 8dfb04a(2019年10月30日)を参照してください。( Junio C Hamanoによってマージされました---コミット57b5301、2019年11月10日)dscho
gitster
stash
:スキップワークツリーファイルの段階的な変更を正しく処理する
サインオフ-作成者:Johannes Schindelin
ビットでマークされたファイル(たとえば、スパースチェックアウトで除外されたファイル)git stash
に対して変更がステージングされているときに呼び出すと、ファイルは代わりに削除済みとして記録されます。skip-worktree
その理由は、git stash
基本的にインデックスを一時的なものにコピーし、ワークツリーからファイルを更新することによって、ワークツリーを反映したツリーを構築しようとするためです。
重要なgit diff-index
のは、HEADにあるが、インデックスでステージングされていないファイルも更新することです。
ただし、一時インデックスがを介して更新されるgit update-index --add --remove
場合、skip-worktreeエントリは、ファイルを誤って削除済みとしてマークします。
--ignore-skip-worktree-entries
新しく導入されたオプションを使用して、これが発生しないようにしましょうgit update-index
。
回帰テストケースは、上記のシナリオの複製を意図的に回避し、代わりに症状のみを再現しようとすることに注意してください。
ダントンプソンによって報告されました。