Gitで1行しか変更していないはずのに全行変更した判定になってしまう

Gitで1行しか変更していないはずなのに、全行変更した判定になってしまうことがあります。
これは、改行コードの違いが原因のようです。
わざわざテキストエディタで改行コードを変更する場合は少ないですが、下記のようにファイルを持ってきて反映することは仕事で発生してしまいます。
- FTPソフトでサーバーからファイルをダウンロードして差分を見ようとしたとき
- 他の人からもらったファイルをGitに反映しようとしたとき
このような作業は、特に複数の会社が関わって共通のファイルをさわっている場合に発生しやすいです。
「本当にサーバーに上がっているファイルとGitで管理しているファイルに差分がないか確認してから作業するために、サーバーからファイルをダウンロードしてGitに反映してから作業する」「他の会社がファイルを編集して、社内Gitに反映するために編集したファイルをもらって反映する」などなど…
反映が必要なのはもちろんですが、全行変更したことになってしまっては、差分管理の意味がありません。
改行コードの設定を確認する
下記のコードを実行すると、現状の改行コード設定が確認できます。
git config --global core.autocrlf設定は「true」「input」「false」の3つがあって、先ほどのコマンドの最後に設定値を入力すれば設定変更できます。
git config --global core.autocrlf input| 設定 | チェックアウト時の動作 | コミット時の動作 |
|---|---|---|
| true | 「CRLF」に変換する | 「LF」に変換する |
| input | 元の改行コードのまま | 「LF」に変換する |
| false | 元の改行コードのまま | 元の改行コードのまま |
勝手に変更されてしまうのは困る場合があるので「false」にするか、もしくは「input」にしておくのがよさそうです。
ただ、こういう設定は自分だけ話ではないので、チーム全体で認識を合わせておく必要があります。
ファイル権限が原因の可能性もある
改行コードだけでなく、ファイル権限が変更された場合も別ファイルとして全行変更として感知されるみたいです。
その場合は、下記コマンドを実行すればファイル権限の変更は無視されるようになります。
git config core.filemode false

Visual Studio Codeで対応する括弧に色を付けて見やすくする環境設定
CSSやJavaScriptでスクロールバーの横幅を取得する方法
gulp-plumberとgulp-notifyでgulpエラー時にデスクトップで通知がくるようにする
SourceTreeでBacklogのGitを使うときに、権限エラーになってしまう場合の解決法
効率的なマークアップが出来るようになるEmmetでCSSを書く時の基本
Visual Studio Codeの「Debugger for Chrome」でJavaScriptのデバッグを行う
Visual Studio Codeのエクスプローラー上でファイル・フォルダの複製ができるようになる拡張機能「Duplicate action」
Macで.pemを使ってAmazon EC2インスタンスへSSH接続する方法
gulpfile.jsにAutoprefixerのブラウザオプションを書くとエラーがでる場合の修正方法
コーディング時にちゃんと意識したい複数語の連結方法一覧(キャメルケース・スネークケース・ケバブケース)
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定