LoginSignup
1
0

More than 1 year has passed since last update.

【Git】git diffで差分を確認したとき、改行も差分に含まれる!

Posted at

はじめに

Git/GitHubについて勉強していたときに、表題の件について知らずに数時間ハマってしまいました。
同じことにハマってしまった人のため + 知識の言語化のため本記事を書きました。

起こったこと

index.html
<p>sample1</p>

上記のファイルをcommitした後、2行目に

index.html
<p>sample2</p>

を追加した後、git diffで差分を確認したところ、

zsh
@@ -1 +1,2 @@
-<p>sample1</p>
\ No newline at end of file
+<p>sample1</p>
+<p>sample2</p>
\ No newline at end of file

上記のように表示されました。
「-<p>sample1</p>って1行目を削除していないのは何故???」「しかも+<p>sample1</p>と、もう一度1行目を書いたことになっている」ということで、いろいろ調べて数時間をつぶしてしまいました。

改行も差分に含まれる

そもそも認識が間違っていたのですが、-<p>sample1</p>というのは一行目が削除されたということではなく、一行目が編集された(=差分がある)という意味でした。
つまり、2行目の<p>sample2</p>を追加する際、1行目の終わりで改行を追加したため、1行目も編集したことになっていました。

index.html
<p>sample1</p>"改行"
<p>sample2</p>

つまり、

zsh
@@ -1 +1,2 @@
-<p>sample1</p> #1行目を編集したという意味
\ No newline at end of file
+<p>sample1</p> #1行目に文("改行")を追加
+<p>sample2</p> #2行目に文(<p>sample2</p>)を追加
\ No newline at end of file

ということです。

改行を差分に入れたくない場合

原因は分かったのですが、1行目は意味的には何も変わらないですし、差分で表示されるのは個人的に違和感を感じます。
対策としては初めから文の最後に改行を入れておけば、行を追加する際も最後の行に改行を入れる必要はなく、差分にも表示されることはありません。

参考記事

1
0
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
1
0