2015-08-09

git diff で空白を無視する

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 が取れた。このコミットの変更の本質が浮かび上がる。変更点が分かりやすい。便利!

No comments:

Post a Comment