这是Ignore files in git log -p的后续行动,也与Making 'git log' ignore changes for certain paths有关。
我正在使用Git 1.9.2。我正在尝试使用pathspec magic :(exclude)
来指定某些补丁不应显示在git log -p
的输出中。但是,我要排除的修补程序仍显示在输出中。
这是一个重现这种情况的最小工作示例:
$ cd ~/Desktop
$ mkdir test_exclude
$ cd test_exclude
$ git init
$ mkdir testdir
$ printf "my first cpp file\n" > testdir/test1.cpp
$ printf "my first xml file\n" > testdir/test2.xml
$ git add testdir/
$ git commit -m "added two test files"
现在,我希望显示历史记录中的所有修补程序,以及testdir
文件夹中与XML文件相对应的修补程序。因此,在VonC's answer之后,我运行
$ git log --patch -- . ":(exclude)testdir/*.xml"
但我的testdir/test2.xml
文件的补丁仍显示在输出中:
commit 37767da1ad4ad5a5c902dfa0c9b95351e8a3b0d9
Author: xxxxxxxxxxxxxxxxxxxxxxxxx
Date: Mon Aug 18 12:23:56 2014 +0100
added two test files
diff --git a/testdir/test1.cpp b/testdir/test1.cpp
new file mode 100644
index 0000000..3a721aa
--- /dev/null
+++ b/testdir/test1.cpp
@@ -0,0 +1 @@
+my first cpp file
diff --git a/testdir/test2.xml b/testdir/test2.xml
new file mode 100644
index 0000000..8b7ce86
--- /dev/null
+++ b/testdir/test2.xml
@@ -0,0 +1 @@
+my first xml file
我做错了什么?我该怎么做才能告诉git log -p
不要显示与testdir
文件夹中所有XML文件相关联的补丁?
答案 0 :(得分:6)
没关系。问题似乎已在Git 1.9.5中修复(更具体地说,在commit ed22b4173bd8d6dbce6236480bd30a63dd54834e
中)。上面我的问题中的玩具示例在Git 2.2.1中按预期工作:
$ git --version
git version 2.2.1
$ mkdir test_exclude
$ cd test_exclude/
$ git init
Initialized empty Git repository in /Users/jubobs/Desktop/test_exclude/.git/
$ mkdir testdir
$ printf "my first cpp file\n" > testdir/test1.cpp
$ printf "my first xml file\n" > testdir/test2.xml
$ git add testdir/
$ git commit -m "added two test files"
[master (root-commit) 5429d04] added two test files
2 files changed, 2 insertions(+)
create mode 100644 testdir/test1.cpp
create mode 100644 testdir/test2.xml
$ git log --patch -- . ":(exclude)testdir/*.xml"
commit 5429d047f140f96c5d6167d083fc1a5eab05fb19
Author: xxxxxxxxxxxxxxxxxxxxxxxxx
Date: Fri Dec 26 23:40:18 2014 +0100
added two test files
diff --git a/testdir/test1.cpp b/testdir/test1.cpp
new file mode 100644
index 0000000..3a721aa
--- /dev/null
+++ b/testdir/test1.cpp
@@ -0,0 +1 @@
+my first cpp file
如您所见,根据需要,test2.xml
命令的输出中没有提到git log
。