4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

記事投稿キャンペーン 「2024年!初アウトプットをしよう」

WindowsでDevcontainerを構築した際にすべてのファイルがgitの変更履歴にあがってきてしまう

Last updated at Posted at 2024-01-19

TL;DR

WindowsでLinuxのDevcontainerを生成している場合、
gitの設定でcore.autocrlf=falseがあるか確認しましょう。

環境

ホスト :Windows
コンテナ:Linux
エディタ:Visual Studio Code

問題の発生

WindowsマシンでDevContainerを構築しようとコンテナを作成した際、ソースコード内の全てのファイルがGitのファイル変更リストに表示される問題が発生しました。
Windowsにインストールしてある「GitHub Desktop」や「Sourcetree」には変更があがってこないので、最初はコンテナ生成時にgitの変更履歴が同期されていないと思い、以下の点を疑って調べていました。

  • GitのSSH関連設定の同期(そういう記事も多かったし…)
  • .gitフォルダの同期(変更履歴情報があるから)
  • devcontainer.jsonやdocker-compose.ymlファイルの設定

原因の特定

「docker等の同期設定が問題ではないのであれば、本当にファイルが変更されているのでは?」と思い、ファイルが勝手に変更される要因を考えてみたところ、Gitが自動的に改行文字を変更する設定があることを思い出しました。

git config --global -lでgitの設定一覧を確認したところ、やっぱり改行文字の自動変換設定であるcore.autocrlf=falseの項目がありませんでした。
この項目がないとWindowsからDevcontainer内のLinuxにファイルを同期させた際に改行文字が自動で変換されてしまいます。

※プロジェクト生成をLinuxや他のDevcontainerなどで行ってもWindowsのローカルにクローンした際に変更されてしまいます

解決策

  1. git config --global -lでgitの設定一覧内にcore.autocrlf=falseという項目があるかを確認
  2. なければgit config --global core.autocrlf falseで設定項目を追加
  3. Devcontainerをリビルド

設定を追加したのに改善しない場合はコンテナを削除したり、docker builder pruneでdockerのビルドキャッシュを削除してみてください

まとめ

初歩的なミスですが、すぐには気付けずハマってしまったので、同じ轍を踏む人が少しでも減るように記事としてあげてみました。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?