LoginSignup
0
3

VS Codeの改行コード設定が効かずにどハマりした話

Last updated at Posted at 2023-05-24

発生した事象

Windowsで VS Code を利用した開発環境を整えているときのこと。
git cloneでgithubからリポジトリを落とし、VS Codeで表示したところ、
改行コードが全て'CRLF'になっていた。
改行コード.png
改行コードを'LF'に変更しても、'CRLF'に自動変更されたりしたので状況をメモする。(未経験向け)

原因

  • git for Windowsの設定core.autocrlfのせい
    (VS Code関係なかったパターン)

試したこと

VS Codeの設定変更

1. コマンドパレットを起動(以下のいずれか)
  • F1キー
  • Windows:Ctrl+Shift+P   Mac:command+Shift+P
2. 基本設定を開く
  • コマンドパレットの検索欄に入力:user setting
    ※「基本設定: ユーザー設定を開く」を選択
    cp_user_setting.png
3. 改行コードの設定を検索し設定を変える
  • 検索欄にEOLを入力し、プルダウンで変更
    \n:LF   \r\n:CRLF   auto:OS固有に合わせる
    2_user_setting_EOL.png
4. 再度git cloneして改行コードを確認する

左上タブにユーザーワークスペースフォルダ(上の画像にはない)があり、
権限毎に設定が存在する。
優先度は ユーザー < ワークスペース < フォルダ のため、設定が効かない場合は全ての権限の設定を確認してみる。

git for Windowsの設定変更(VS Codeの設定でなおらない場合)

1. gitの設定を確認する
  • 実行コマンド(local設定)  : git config core.autocrlf
  • 実行コマンド(global設定): git config --global core.autocrlf

PowerShellでコマンド実行すると結果は正しく表示されるものの、
実際は設定ファイルが作成されない事象が発生した。
コマンドプロンプトで実行すると正しく設定できた。 謎。
(linuxで同事象は未確認。PowerShellでgit configはしない方がいいだろう)

実行結果
#local設定は設定を適用させたいリポジトリ(プロジェクトフォルダ)のルートディレクトリに移動して実施する
git config core.autocrlf
True     /* Trueは改行コードをCRLFに変更する */

git config --global core.autocrlf
False    /* falseは改行コードをCRLFに変更しない */
2. 設定を変更する

・1の実行結果を見ると、local設定Trueになっているのが原因で、git cloneしたファイルの改行コードが'CRLF'に自動変更されていたことが分かった。
・対象のプロジェクトの改行コードが自動的に変換されないように以下のコマンドを実施した。
 (『tip.設定ずみのローカル設定を削除する方法』の方がオススメかも)

  • 実行コマンド(local設定) : git config core.autocrlf false
実行結果
#local設定は設定を適用させたいリポジトリ(プロジェクトフォルダ)のルートディレクトリに移動して実施する
git config core.autocrlf false
3. gitの設定を確認する
コマンドの実行&結果
#local設定は設定を適用させたいリポジトリ(プロジェクトフォルダ)のルートディレクトリに移動して実施する
git config core.autocrlf
False

基本的にはグローバル設定をしておき、特定プロジェクトのみグローバル設定とは別にしたい場合にローカル設定を行うようにする。

tip. 設定ずみのローカル設定を削除する方法

グローバル設定を使用し、ローカル設定を削除したい場合は以下のコマンドを実施する

#local設定は設定を適用させたいリポジトリ(プロジェクトフォルダ)のルートディレクトリに移動して実施する
git config --unset core.autocrlf

#確認コマンド
git config core.autocrlf
   ← 実行結果:設定が消えて何も表示されない

その他

git の設定ファイル(.gitconfig)の場所

グローバル設定
/* ユーザーのカレントフォルダ直下に隠しファイルで存在しているはず */
/Users ─ [user名] ┬ [省略] ┬ リポジトリフォルダ
                  └ .gitconfig
ローカル設定
/* 設定したリポジトリ(プロジェクトフォルダ)の直下に隠しフォルダがあるはず */
/Users ─ [user名] ┬ [省略] ┬ リポジトリフォルダ
                  └         └ .git ┬ .gitconfig

VS Code の設定ファイル(setting.json)の場所

1. コマンドパレットを起動(以下のいずれか)
  • F1キー
  • Windows:Ctrl+Shift+P   Mac:command+Shift+P
2. 基本設定(JSON)を開く
  • コマンドパレットで検索:setting json
    setting_json.png
setting.json のなかみ
{
    "files.eol": "\n"
}

基本はユーザー設定のみ行っておけばOK。
ユーザー設定・ワークスペース設定はgitと同様、全体的な設定を行なっておき、
例外的な場合に部分的な設定を行う。

優先度 範囲 git VS Code
低い 設定されてない全体
に適用される
グローバル設定 ユーザー設定
高い 設定した場所に
だけ適用される
ローカル設定 ワークスペース設定

オチ

git config core.autocrlfの設定で改行コードが変更され、ローカルで'CRLF'で作業を行なっても、再度githubへプッシュする時に改行コードを'LF'へ戻してくれるっぽい?
あまり気にしなくてもいいような気がする。
  ※指摘があれば是非

0
3
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
0
3