はじめに (対象読者・この記事でわかること)
この記事は、Windows環境でGitHub Desktopを使用している開発者の方を対象にしています。特に、チーム開発でLinux/macOSユーザーと共同作業をしている場合に、改行コードの違いで困っている方に最適です。
この記事を読むことで、Windows版GitHub Desktopでファイルをコミットする際に、改行コードが自動的にCRLFに変換されてしまう問題を解決できます。具体的には、GitHub Desktopの設定を変更して、改行コードをそのまま保持した状態でコミットする方法をマスターできます。
前提知識
この記事を読み進める上で、以下の知識があるとスムーズです。 - Gitの基本的な使い方(コミット、プッシュ、プル) - 改行コード(LFとCRLF)の違いについての基本的な理解 - Windows版GitHub Desktopの基本的な操作
GitHub Desktopと改行コードの問題の背景
Windows版GitHub Desktopを使用していると、LF(Line Feed)で作成されたファイルをコミットする際に、自動的にCRLF(Carriage Return + Line Feed)に変換されてしまう問題が発生します。これは、Gitのコア.autocrlf設定がデフォルトでtrueになっているためです。
この問題は、主に以下のような場面で顕在化します:
- Linux/macOSで開発したプロジェクトをWindowsで引き継いだ場合
- チームメンバーが混在している環境で開発している場合
- .gitattributesファイルで改行コードを明示的に指定しているにも関わらず、期待通りに動作しない場合
この変換が行われると、差分がすべて変更されたように表示され、実質的な変更箇所を見つけるのが困難になります。また、CI/CDパイプラインで改行コードに依存する処理がある場合、予期しないエラーの原因となることもあります。
Windows版GitHub Desktopで改行コードを変換しないようにする設定方法
以下の手順で、Windows版GitHub Desktopで改行コードの自動変換を無効にできます。
ステップ1:Gitのグローバル設定を確認する
まず、現在のGit設定を確認します。コマンドプロンプトまたはPowerShellを開き、以下のコマンドを実行します:
Bashgit config --global core.autocrlf
このコマンドの結果がtrueと表示された場合、改行コードの自動変換が有効になっています。
ステップ2:core.autocrlfをfalseに設定する
改行コードの自動変換を無効にするには、以下のコマンドを実行します:
Bashgit config --global core.autocrlf false
これで、Gitは改行コードの自動変換を行わなくなります。
ステップ3:GitHub Desktopでリポジトリを開き直す
設定を適用するために、GitHub Desktopを再起動し、対象のリポジトリを開き直します。この操作により、新しい設定が適用されます。
ステップ4:.gitattributesファイルで改行コードを明示的に指定(推奨)
プロジェクトルートに.gitattributesファイルを作成し、以下のように記述することで、より細かく制御できます:
# すべてのテキストファイルでLFを使用
* text=auto eol=lf
# Windows用のバッチファイルのみCRLFを使用
*.bat text eol=crlf
*.cmd text eol=crlf
# バイナリファイルは変換しない
*.png binary
*.jpg binary
*.gif binary
*.ico binary
*.mov binary
*.mp4 binary
*.mp3 binary
*.flv binary
*.fla binary
*.swf binary
*.gz binary
*.zip binary
*.7z binary
*.ttf binary
*.eot binary
*.woff binary
*.woff2 binary
*.pyc binary
*.pdf binary
*.exe binary
*.so binary
ハマった点やエラー解決
問題1:設定を変更しても改行コードが変換される
場合によっては、core.autocrlfをfalseに設定しても、まだ改行コードが変換されることがあります。これは、リポジトリにローカル設定が存在する可能性があります。
解決策: リポジトリ内の設定を確認します:
Bashgit config --local core.autocrlf
もしtrueと表示された場合、以下で無効にします:
Bashgit config --local core.autocrlf false
問題2:既にCRLFに変換されたファイルの扱い
設定を変更しても、既にCRLFに変換されたファイルはそのまま残ります。これを修正するには、以下の手順を実行します:
Bash# 一旦インデックスをクリア git rm --cached -r . git reset --hard git add . git commit -m "Normalize line endings"
問題3:GitHub Desktopのバージョンによる違い
古いバージョンのGitHub Desktopでは、設定が正しく適用されない場合があります。
解決策: GitHub Desktopを最新版にアップデートしてください。アプリケーション内から「ヘルプ」→「アップデートの確認」を選択できます。
まとめ
本記事では、Windows版GitHub Desktopで改行コードが自動変換されてしまう問題と、その解決方法について解説しました。
- 改行コードの自動変換はGitのcore.autocrlf設定によるもの
git config --global core.autocrlf falseで無効化可能.gitattributesファイルでプロジェクト固有の設定が推奨- 既に変換されたファイルは適切に処理する必要がある
この記事を通して、Windows環境でも他のOSユーザーと同じ改行コードを維持しながら開発ができるようになりました。今後は、より大規模なプロジェクトでの改行コード管理について、詳しく解説する記事を作成する予定です。
参考資料
- Git公式ドキュメント - git-config
- GitHub Desktop Documentation
- Git - gitattributes Documentation
- 改行コードの違いについて - テクノロジー豆知識
