はじめに (対象読者・この記事でわかること)

この記事は、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を開き、以下のコマンドを実行します:

Bash
git config --global core.autocrlf

このコマンドの結果がtrueと表示された場合、改行コードの自動変換が有効になっています。

ステップ2:core.autocrlfをfalseに設定する

改行コードの自動変換を無効にするには、以下のコマンドを実行します:

Bash
git 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に設定しても、まだ改行コードが変換されることがあります。これは、リポジトリにローカル設定が存在する可能性があります。

解決策: リポジトリ内の設定を確認します:

Bash
git config --local core.autocrlf

もしtrueと表示された場合、以下で無効にします:

Bash
git 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ユーザーと同じ改行コードを維持しながら開発ができるようになりました。今後は、より大規模なプロジェクトでの改行コード管理について、詳しく解説する記事を作成する予定です。

参考資料