如何显示git repo的子目录的git log history?

时间:2013-05-02 16:58:07

标签: git

假设我有一个看起来像这样的git仓库。

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

有没有办法让git log只显示特定目录的日志消息。例如,我想查看提交仅在foo / A中触摸文件的内容?

6 个答案:

答案 0 :(得分:181)

从目录foo/,使用

  git log -- A

您需要使用' - '将<path>..<since>..<until> refspec分开。

# 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

答案 1 :(得分:25)

您可以将git log与相应文件夹的路径名一起使用:

git log A B

日志只会显示AB中的提交。我通常会抛出--stat以使事情变得更漂亮,这有助于快速提交审核。

答案 2 :(得分:24)

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

gitk -- foo/A

enter image description here

答案 3 :(得分:16)

输入

git log .

从特定目录

,它还提供该目录中的提交。

答案 4 :(得分:3)

如果您需要所有已更改文件的完整差异,

git log -p非常有用。

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

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

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

答案 5 :(得分:0)

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

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

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