检索回购中的选项卡更改

时间:2016-01-31 22:30:43

标签: git diff whitespace

假设您有一个使用空格替换制表符的更改。我上传了一个临时回购

$ git clone https://github.com/albfan/whitespace-diff
$ cd whitespace-diff
$ cat -A file1
text$
^Ianother text$
^I^Itext$
$ git checkout HEAD^
$ cat -A file1
text$
^Ianother text$
^I   text$

如果您要求git进行更改

$ git checkout master
$ git diff HEAD^
diff --git c/file1 w/file1
index 69e1c73..82d1284 100644
--- c/file1
+++ w/file1
@@ -1,3 +1,3 @@
 text
        another text
-          text
+               text

用空格替换自己的标签

如何才能获得这种差异:

$ diff -u <(git show HEAD^:file1 | cat -A) <(git show HEAD:file1 | cat -A)
--- /dev/fd/63  2016-01-31 23:21:52.341506890 +0100
+++ /dev/fd/62  2016-01-31 23:21:52.341506890 +0100
@@ -1,3 +1,3 @@
 text$
 ^Ianother text$
-^I   text$
+^I^Itext$

并看到真正的标签替换?这里只有一个涉及diff的文件,但是在提交时隐含了几个文件得到这个输出可能是一场噩梦

1 个答案:

答案 0 :(得分:0)

只需将输出传递给过滤器,以便为您处理此替换。这是一个Perl单行。

clone()