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

CSSで1行で簡単にスムーススクロールを実装できる「scroll-behavior」プロパティ
Dart Sassでファイルを分割して管理する方法|Dart Sass入門
WordPressのカスタムメニューでは、内部リンクに対してカスタムリンクは使わない!
PubSubHubbubを利用してWebサイトの更新をリアルタイムに通知しよう
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
Google Maps APIでピンの見た目をカスタマイズする方法
CSS疑似要素の「:empty」でタグの中身が空のときのスタイルを設定する
横幅が広がったときの挙動が変わる!CSS Gridの「auto-fill」と「auto-fit」の違い
効率的なマークアップが出来るようになるEmmetでHTMLを書く時の基本
Visual Studio Codeで複数ファイルを編集するときにタブやペインの操作方法
iTerm2で「Use System Window Restoration Setting」を設定しているとアラートが表示されて機能しない
Google Chromeのサイト内検索(カスタム検索)機能を別のプロファイルに移行する方法
iPadで入力モードを切り替えずに数字や記号をすばやく入力する方法
iPhoneやiPadでYouTubeの再生速度を3倍速や4倍速にする方法
Keynoteで有効にしているはずのフォントが表示されない現象
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
chezmoi(シェモア)で始めるdotfiles管理
GitHubの通知を見逃さない!通知に特化したアプリ「Gitify」
Keyboard Maestroの変数基礎
Neovimを使い始める最初の一歩として便利な「LazyVim」
ウェブサイトをmacOSアプリとしてラッピングする「Unite Pro」
Keyboard Maestroの「Macro Debugger」で複雑なマクロのデバッグを行う方法
無料版でも高機能なランチャーアプリ「Raycast」の基本機能と環境設定
OnyXでターミナルを使わずにmacOSの詳細設定を行う
軽量で高速なターミナルエミュレーター「Ghostty」の設定方法
Eagleで実現するクリエイティブ素材の簡単管理