如何在特定路径中为特定错误列出特定类型的所有已更改文件的git列表?

时间:2013-04-05 13:10:21

标签: git git-log git-status

我想知道如何让git列出所有已更改的文件

  • 某种类型(例如所有php文件)
  • 根据某个错误提交。或者仍未提交的
  • 并且处于特定路径

我将首先为我的问题列出一个示例情况。

说我更改了以下文件:

未提交的更改

/site/main.php
/site/main.html
/site/includes/lib.php

提交3
提交消息:“Bug xyz:做了一些改动”

/site/main.php
/site/main.html
/site/main.js
/test/test.php
/test/test.html

提交2
提交消息:“Bug xyz:做了一些更改”

/site/main.php
/site/main.html
/site/includes/include.php

提交1
提交消息:“Bug abc:请注意,这是另一个错误”

/site/login.php

说我还在研究bug xyz。现在我需要一个列表,列出目前在网站目录中已经更改的所有php文件。所以我需要以下列表作为输出:

/site/main.php
/site/includes/lib.php
/site/includes/include.php

什么命令可以做到这一点?

1 个答案:

答案 0 :(得分:8)

这很接近:

git log --grep=xyz -- '*.php'

--grep参数应用于提交消息。 files参数上的单引号可确保git执行扩展。

测试:

ebg@ebg(328)$ git log --oneline
f687708 bar x, y, not a
dfb4b96 foo d, e, f
df18118 foo a, b, c
ebg@ebg(329)$ git log --oneline --grep=a
f687708 bar x, y, not a
df18118 foo a, b, c
ebg@ebg(330)$ git log --oneline --grep=a -- 'a.*'
df18118 foo a, b, c

文件扩展可能需要处理子目录。排序:

git log --oneline --grep=a -- '*/a.*' 'a.*'