はじめに
Git/GitHubについて勉強していたときに、表題の件について知らずに数時間ハマってしまいました。
同じことにハマってしまった人のため + 知識の言語化のため本記事を書きました。
起こったこと
<p>sample1</p>
上記のファイルをcommitした後、2行目に
<p>sample2</p>
を追加した後、git diffで差分を確認したところ、
@@ -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行目も編集したことになっていました。
<p>sample1</p>"改行"
<p>sample2</p>
つまり、
@@ -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行目は意味的には何も変わらないですし、差分で表示されるのは個人的に違和感を感じます。
対策としては初めから文の最後に改行を入れておけば、行を追加する際も最後の行に改行を入れる必要はなく、差分にも表示されることはありません。