5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Githubと改行文字

Posted at

結論

Githubは ファイルの改行文字 が変わった場合、正しく差分として出せない場合がある。

検証

CRLF / LF / CR で改行されたダミーデータをが入っている、masterに対して
改行文字のみを変更する、PullRequestを複数投げて差分を見てみます。

色々なパターンがあると思いますが、今回は
CRLF -> LF
CR -> LF

の場合を検証してみます。

CRLF -> LF の場合

ズドン。
スクリーンショット 2016-01-28 21.55.23.png

全ての行 が差分となっています。
最後の改行文字が変わったので、納得が出来ます。

windowsで作成したファイルを、Macで開いて編集し、上書きした時などは
エディタによっては起こりうるのではないでしょうか。

CR -> LF の場合

ドカン。
スクリーンショット 2016-01-28 21.54.54.png

!?
なんだこれは!(ガタッ
何もしてないのにGitが壊れた!

いきなりこれです。

-[^M {^M "_id": "56aa0b7ee64843b8df9bd9bf",^M "index": 0,^M ...(略)

の様な、気の利いた差分は 一切出ません。

所感

改行コードぐらいGithub上で吸収して、変な差分出さないで欲しい。
あまり普段は意識する事が無い、ファイルの改行コードにも気をつけようと思いました。

お使いのエディタで、何かのショートカットが偶然押されてしまい
更に
ちょっとした作業だからと、git diffで差分を確認しないでcommit/pushした場合
とかに起こってしまう可能性があるかもしれません。

滅多に無いレアケースですが、偶然身の回りで起こって驚きました。
ご注意あれ。

5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?