假设我有一个看起来像这样的git仓库。
foo/
.git/
A/
... big tree here
B/
... big tree here
有没有办法让git log只显示特定目录的日志消息。例如,我想查看提交仅在foo / A中触摸文件的内容?
答案 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
日志只会显示A
和B
中的提交。我通常会抛出--stat
以使事情变得更漂亮,这有助于快速提交审核。
答案 2 :(得分:24)
答案 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/*"
这不是完美的选择,因为它将抓取其他具有相同名称的文件夹,但是如果它是唯一的,那么它似乎可以工作。