WebDesigner's Memorandumウェブデザイナーの備忘録

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

著者について

プロフィール画像

サイトウ マサカズ@31mskz10

1997年生まれ。2016年から専門学校でデザインについて勉強。卒業後は神戸の制作会社「N'sCreates」にウェブデザイナーとして入社。このブログでは自分の備忘録も兼ねて、ウェブに関する記事や制作環境を効率的に行うための記事を書いています。

Twitterをフォロー Facebookでいいね