⚠️ 注釈
本記事は、実際に発生した事象を解決した後、チャット履歴をもとにAIが記事化したものです。
そのため、記載内容に誤りがある可能性があります。実際に問題が発生した際は、公式ドキュメントや最新の情報を参照することをお勧めします。
はじめに
Gitで全ファイルが変更対象として表示される(黄色でM表示される)問題に遭遇しました。git statusで確認すると大量のファイルにMマークが付いているのに、実際にはgit diffで確認しても実質的な変更内容がない。GitLensなどの拡張機能が正常に動作しなくなる現象です。
本記事では、この問題の解決方法を説明します。
解決方法
以下のコマンドを実行することで、変更表示を解除できます:
git restore .
このコマンドを実行すると、作業ディレクトリ内のすべてのファイルが最後にコミットした状態に戻り、変更表示が消えます。
注意: このコマンドは未保存の変更も破棄します。重要な変更がある場合は、事前にコミットまたはバックアップを取ってください。
起こった事象
Rebuild Containerを実行した後、以下のような現象が発生しました:
- 全ファイルが更新対象として表示される(ファイル名が黄色くなって
Mと表示される) -
git statusで確認すると、大量のファイルにMマークが付いている - 実際には
git diffで確認しても、実質的な変更内容はない - この影響でGitLensが正常に動作しない
改行コードや空白の違いのみが検出されており、実質的なコード変更はありませんでした。
原因
Rebuild Containerを実行したことで、この問題が発生しました。主な原因は、改行コード(CRLF ↔ LF)の自動変換です。
- Rebuild Container時に、Windows環境(WSL2含む)とLinuxコンテナ間でファイルシステムが異なる
- Gitの
core.autocrlf設定やファイルシステムの違いにより、改行コードが自動的に変換される - コンテナ再ビルド時に、ファイルが読み込まれる際に改行コードが変換される可能性がある