【问题标题】:Ignore files in git log -p忽略 git log -p 中的文件
【发布时间】:2014-10-09 23:32:11
【问题描述】:

我正在尝试总结我在一个项目上的工作。问题是我不想在git log --patch 的输出中包含测试文件。

文件位于名为mtest 的单个目录中;但是,该文件夹还包含我想要展示的测试套件代码。我要排除的测试文件具有扩展名mscxxml,因此我希望过滤器基于此工作。

我查看了Making 'git log' ignore changes for certain paths,但这似乎排除了修改文件的提交,而不是简单地排除文件。

有没有办法做到这一点?

我已经尝试过 Jubobs 的回答,它似乎有效,但令人惊讶的是,即使打开了过滤器,也出现了 2 个文件。

我已经用这个小存储库复制了这个:

mkdir test
cd test
git init
echo 'readme' > README
git add .
git commit -m "Initial commit"

mkdir test2
cd test2
echo 't1' > test1.cpp
echo 't2' > test2.xml
git add .
git commit -m "c2"

echo 't3' > test3.cpp
echo 't4' > test4.xml
git add .
git commit -m "c3"

我注意到创建目录时不会过滤文件。 我尝试了以下命令:

git log --patch -- . ":(exclude)**/*.xml"

这导致 两个 xml 文件都被包含在内。

git log --patch -- . ":(exclude)*.xml"

这令人惊讶地过滤掉了test4.xml,但没有过滤掉test2.xml

【问题讨论】:

标签: git git-log


【解决方案1】:

我不知道您正在/正在使用哪个版本的 Git,但您报告的问题似乎已在 Git 1.9.5 中修复(有关错误修复的更多详细信息,请参阅 this)。以下命令

git log --patch -- . ":(exclude)*.xml"

在您的玩具示例中执行您想要的操作:如下所示,所有*.xml 文件都会根据需要被过滤掉。

$ mkdir test
$ cd test
$ git init
Initialized empty Git repository in /Users/jubobs/Desktop/test/.git/

$ echo 'readme' > README
$ git add .
$ git commit -m "initial commit"
[master (root-commit) ad6cc73] initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 README

$ mkdir test2
$ cd test2
$ echo 't1' > test1.cpp
$ echo 't2' > test2.xml
$ git add .
$ git commit -m "c2"
[master 8d733a2] c2
 2 files changed, 2 insertions(+)
 create mode 100644 test2/test1.cpp
 create mode 100644 test2/test2.xml

$ echo 't3' > test3.cpp
$ echo 't4' > test4.xml
$ git add .
$ git commit -m "c3"
[master 3e8a3f6] c3
 2 files changed, 2 insertions(+)
 create mode 100644 test2/test3.cpp
 create mode 100644 test2/test4.xml

$ git log --patch -- . ":(exclude)*.xml"
commit 3e8a3f6c627576e8f7d1863b92d4f631ae309417
Author: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Date:   Sat Dec 27 00:19:56 2014 +0100

    c3

diff --git a/test2/test3.cpp b/test2/test3.cpp
new file mode 100644
index 0000000..6d6ea65
--- /dev/null
+++ b/test2/test3.cpp
@@ -0,0 +1 @@
+t3

commit 8d733a27a0e2c9f4c71e7b64742107255035d6cd
Author: xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Date:   Sat Dec 27 00:19:33 2014 +0100

    c2

diff --git a/test2/test1.cpp b/test2/test1.cpp
new file mode 100644
index 0000000..795ea43
--- /dev/null
+++ b/test2/test1.cpp
@@ -0,0 +1 @@
+t1

【讨论】:

  • 很好的答案!对于像我这样正在寻找一种方法来为 package-lock.json 使日志不可读的节点项目读取“git log -p”的人,这是我的日志别名:alias log='git log -p -- . ":(exclude)package-lock.json"'
猜你喜欢
  • 2011-10-17
  • 2016-04-09
  • 1970-01-01
  • 2022-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2021-09-16
相关资源
最近更新 更多