git で diff を取る時、空白(スペース) に関わる変更を無視したい時がある。コードの可読性を上げるためとか、インデントを修正しただけとか、行末のスペースを消しただけとか、そういった「空白まわり」の変更が入っている時。スペースの変更を気にせず、メインの修正にだけ注目したい場合、空白を無視するオプションを使うと便利。
git diff に -b オプションを付けるか、--ignore-space-change オプションを付ける。
サンプル
空白無視 diff のサンプル。まずは普通に diff を取ってみる。
$ git diff
diff --git a/chatwork.el b/chatwork.el
index b3a96e5..5f8cd9c 100644
--- a/chatwork.el
+++ b/chatwork.el
@@ -249,9 +249,9 @@ CALLBACK sould be a callback function"
(goto-char (point-max))
(mapc (lambda (plist)
(let ((message-id (plist-get plist :message_id))
- (account-id (plist get (plist-get plist :account) :account_id)
- (send-at (plist-get plist :send_time))
- (body (plist-get plist :body)))
+ (account-id (plist-get (plist-get plist :account) :account_id))
+ (send-at (plist-get plist :send_time))
+ (body (plist-get plist :body)))
(insert chatwork-page-delimiter
(number-to-string message-id) " "
(number-to-string account-id) " "
メインの修正は最初の一行だけ。続く 2 行は alignment を揃えただけ。
ここで -b オプションを付けて diff を取ってみる。
$ git diff -b
diff --git a/chatwork.el b/chatwork.el
index b3a96e5..5f8cd9c 100644
--- a/chatwork.el
+++ b/chatwork.el
@@ -249,7 +249,7 @@ CALLBACK sould be a callback function"
(goto-char (point-max))
(mapc (lambda (plist)
(let ((message-id (plist-get plist :message_id))
- (account-id (plist get (plist-get plist :account) :account_id)
+ (account-id (plist-get (plist-get plist :account) :account_id))
(send-at (plist-get plist :send_time))
(body (plist-get plist :body)))
(insert chatwork-page-delimiter
空白修正以外の diff が取れた。このコミットの変更の本質が浮かび上がる。変更点が分かりやすい。便利!