Git × Cursor 入門:改行問題「LF ⇄ CRLF」から GitHub 連携まで完全ガイド

Cursor で開発したプログラムを初めて Git にコミットする際、「LF will be replaced by CRLF」などの警告に戸惑ったり、「プログラム/ does not have a commit checked out」というエラーが出た経験はありませんか?本記事では、これらの問題を整理し、解決方法と合わせて GitHub との連携までを徹底解説します。

✅ 目次

  1. Cursor から Git コミットの基本
  2. 警告:「LF will be replaced by CRLF」って何?
  3. エラー:「プログラム/ does not have a commit checked out」原因と対処
  4. GitHub リモートリポジトリとの連携方法(HTTPS / SSH)
  5. まとめと推奨設定

1. Cursor → Git コミットの基本フロー

Cursor は VS Code ベースのコードエディタなので、Git の操作はターミナルでも GUI でも実現可能です。

ターミナルでの基本操作

git init                    # 新しいリポジトリの初期化
git add .                   # 全ファイルをステージ
git commit -m "初回コミット"  # 初回コミット

Cursor 内 GUI 操作

左の「Source Control」アイコンから、変更ファイルを選んで Commit ボタンを押すだけ。

2. 警告:「LF will be replaced by CRLF」って何?

これは改行コードの差異(Windows の CRLF と Unix の LF)によるもので、Git が自動変換を行おうとしているときに出る警告です。

Windows では CRLF、Linux/macOS では LF が使われ、これが混在すると「改行だけで差分が出る」などのトラブルの原因になります :contentReference[oaicite:0]{index=0}。

2‑1. core.autocrlf 設定

環境推奨設定動作
Windowsgit config --global core.autocrlf trueチェックアウト時に LF → CRLF に変換し、コミット時には CRLF → LF に変換
macOS/Linuxgit config --global core.autocrlf inputコミット時に CRLF → LF のみ変換

この設定により、警告は減少し、コードの一貫性も保たれます :contentReference[oaicite:1]{index=1}。

2‑2. .gitattributes で強制ルールを定める

個別プロジェクトにルールを埋め込みたいなら、ルートに .gitattributes を配置しましょう。以下は一般的な設定例です:

* text=auto
*.sh text eol=lf      # シェルスクリプトは常に LF
*.bat text eol=crlf   # Windows バッチは常に CRLF
*.png binary          # 画像などは変換しない

これにより、混在によるトラブルや警告をさらに抑えられます :contentReference[oaicite:2]{index=2}。

2‑3. 改行設定反映後の再適用

設定を変更したら、次のようにして一括適用します:

git add --renormalize .
git commit -m "Normalize line endings"

全ファイルに設定反映され、状態がクリーンになります :contentReference[oaicite:3]{index=3}。

微細な確認には git ls-files --eol が便利です :contentReference[oaicite:4]{index=4}。

3. エラー:「プログラム/ does not have a commit checked out」原因と対処

このエラーは、…

  • サブモジュール:`プログラム/` が git サブモジュールなら、`cd プログラム && git checkout main` などで解決。
  • 空ディレクトリ:Git は空フォルダを管理できないので、.gitkeep を入れてから add。
  • テンプレートや中身が未設定のフォルダなら、一時的に除外して後回しにしても OK。

エラーが出る場合は中身構成を確認し、必要なら補足情報をご提供ください。

4. GitHub リモート連携

GitHub への push ~ pull を行うには、HTTPS または SSH のいずれかがおすすめです。

4‑1. HTTPS(手軽だが毎回トークン入力が必要)

git remote add origin https://github.com/ユーザー名/リポジトリ名.git
git push -u origin main

初回は GitHub の Username + Personal Access Token(PAT)を使用します。

4‑2. SSH(初期設定は必要だが以降は快適)

  1. SSH 鍵の生成:ssh-keygen -t ed25519 -C "you@example.com"
  2. 公開鍵を GitHub に登録(Settings → SSH keys)
  3. リモート URL を SSH に変更:git remote set-url origin git@github.com:ユーザー名/リポジトリ名.git
  4. ssh -T git@github.com で接続テスト(成功コメントが返るはず)
  5. git push -u origin main して完了

5. まとめと推奨設定

  • core.autocrlf:Windows は true、それ以外は input。
  • .gitattributes:プロジェクト固有ルールで改行を明示。
  • 再適用:変更後は git add --renormalize .済ませて clean に。
  • サブモジュール or 空フォルダ:構造と用途に応じて適切に管理・除外。
  • HTTPS vs SSH:長期運用なら SSH、手軽なら HTTPS + PAT。

補足リソース

  • Gitドキュメント:.gitattributes の仕組み :contentReference[oaicite:5]{index=5}
  • GitHub公式:改行設定について :contentReference[oaicite:6]{index=6}
  • StackOverflow:「git ls-files –eol」による改行ステータス確認方法 :contentReference[oaicite:7]{index=7}

まとめ

Cursor で作ったコードも、Git の基本操作や改行設定をしっかり構築すれば、警告やエラーに悩むことなく GitHub に安心して連携できます。ぜひこの記事の設定をもとに、Git/CI 環境を整えてみてください。

もしさらに「SSH鍵のパスフレーズ管理」や「CI/CD と GitHub Actions 連携」などが気になる方は、いつでもご相談ください 🙂