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

Movable TypeでAssetURLやEntryPermalink・ContentPermalinkで出力されるパスを絶対パスから相対パスに変える
TwitterとFacebook用のOGP設定方法と表示確認方法
Visual Studio Codeで連番を入力する拡張機能「vscode-input-sequence」
Vue Routerでページ遷移後にトーストを表示させる方法
.gitignoreに含めた方がいいファイル・フォルダが一覧でまとまっている「gitignore.io」
Visual Studio CodeでToDoコメントを一覧で表示する拡張機能「Todo Tree」
Visual Studio Codeのファイル横に表示されるファイルアイコンのテーマまとめ
WordPressで既に公開済みの記事の更新を、指定した日付に反映する方法「PublishPress Revisions」
Apacheのテストページを非表示にする方法
Macで.pemを使ってAmazon EC2インスタンスへSSH接続する方法
AirPodsで片耳を外しても再生が止まらないようにする方法
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
Path Finder 8のウインドウにターミナルを追加して使用する
Google Chromeのタブを1つにまとめる拡張機能「OneTab」
HTMLタグの入力をラクにするスニペット集
pointer-eventsプロパティでクリックイベントを無効化にする|気になるCSSプロパティ
macOSのシステム環境設定「Spotlight」の設定見直し
CSS Nite in Kobe, vol.39「ウェブサイトの分析とGoogleアナリティクス活用・カイゼンのノウハウを学ぼう」に参加してきました
Visual Studio CodeでDart Sassのコンパイルができる拡張機能「DartJS Sass Compiler and Sass Watcher」
MacのRubyをrbenvで管理する方法
Alfredで現在開いているフォルダ内の画像をImageOptimで圧縮するWorkflowの作り方