294

假设我有一个如下所示的 Git 存储库:

foo/
  .git/
  A/
   ... big tree here
  B/
   ... big tree here

有没有办法要求git log只显示特定目录的日志消息?例如,我只想查看foo/A中的哪些提交触及文件。

4

6 回答 6

319

从目录foo/,使用

  git log -- A

您需要将“--”与<path>..参考规范分开<since>..<until>

# Show changes for src/nvfs
$ git log --oneline -- src/nvfs
d6f6b3b Changes for Mac OS X
803fcc3 Initial Commit

# Show all changes (one additional commit besides in src/nvfs).
$ git log --oneline
d6f6b3b Changes for Mac OS X
96cbb79 gitignore
803fcc3 Initial Commit
于 2013-05-02T17:15:42.333 回答
51

进入

git log .

从特定目录。它还在该目录中提供提交。

于 2017-11-14T09:00:17.137 回答
39

如果您想以图形方式查看它,可以使用gitk

gitk -- foo/A

在此处输入图像描述

于 2016-01-12T20:54:20.393 回答
28

您可以使用git log各个文件夹的路径名:

git log A B

A日志将仅显示在和中进行的提交B。我通常--stat会让事情变得更漂亮,这有助于快速提交审查。

于 2013-05-02T17:09:34.227 回答
4

其他答案仅显示更改的文件。

git log -p DIR如果您需要特定子目录中所有更改文件的完整差异,这非常有用。

示例:显示特定版本范围内的所有详细更改

git log -p 8a5fb..HEAD -- A B

commit 62ad8c5d
Author: Scott Tiger
Date:   Mon Nov 27 14:25:29 2017 +0100

    My comment

...
@@ -216,6 +216,10 @@ public class MyClass {

+  Added
-  Deleted
于 2018-01-27T11:49:38.763 回答
3

为了跟踪文件夹移动到的文件夹的更改,我开始使用:

git rev-list --all --pretty=oneline -- "*/foo/subfoo/*"

这并不完美,因为它会抓取具有相同名称的其他文件夹,但如果它是唯一的,那么它似乎可以工作。

于 2019-06-13T20:37:18.753 回答