赞
踩
完整用法请看官方文档,有中文翻译:https://git-scm.com/docs/git-log/zh_HANS-CN
要查看特定目录下最近的代码变更,可以使用git log
命令结合git diff
命令。git log
用于查看提交历史,而git diff
用于查看提交之间的具体代码变更。
以下是一种方法,用于查看src/
目录下最近的代码变更:
git log -p -- src/
该命令的含义如下:
-p
选项用于显示每个提交的具体代码变更,即显示代码补丁。--
后面跟着的是要查看的目录或文件,这里我们指定了src/
目录。运行该命令后,将看到每个提交的详细信息,包括提交的作者、提交时间、提交信息以及具体的代码变更。
如果只想查看某个特定文件的代码变更,可以将--
后面的目录改为文件名。例如,以下命令用于查看src/main.c
文件的代码变更:
git log -p -- src/main.c
这样就可以查看src/main.c
文件的最近几个提交的代码变更了。
注意,
git diff
命令也可以用来比较工作区和暂存区、工作区和最新提交、两个提交之间的代码变更,但如果只想查看某个目录下最近的代码变更,结合git log -p
更为直观和方便。
git log -p命令可以显示每个提交的修改内容,包括哪些文件被修改,被修改的行数以及具体的修改内容。这个命令比较常用,可以帮助开发者更好地了解每个提交的修改细节。
以下是一个git log -p命令的输出示例:
commit f7d33c1 (HEAD -> master)
Author: John <john@example.com>
Date: Sat Apr 10 12:00:00 2021 +0800
Update README.md
diff --git a/README.md b/README.md
index 1234567..abcdefg 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,3 @@
# My Project
-This is a test project.
+This is a test project. It is used to demonstrate how to use git.
输出中,diff行表示文件的差异,@@行表示修改的具体位置,-行表示被删除的内容,+行表示被添加的内容。 注意,git log
-p命令会输出每个提交的所有修改内容,如果提交比较多,输出会比较长,可以使用其他参数,如–since、–until、–author等来筛选需要查看的提交。
--oneline
: 用一行的形式显示每个提交的简短信息,包括提交哈希值和提交信息的前几个字。
--graph
: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。
--decorate
: 显示所有标签和分支的名称。
--author
: 只显示指定作者的提交记录,可以使用--author=<author_name>
或--author=<author_email>
指定。
--grep
: 只显示包含指定字符串的提交记录,可以使用--grep=<string>
指定。
--since/--until
: 只显示指定时间范围内的提交记录,可以使用--since=<date>或--until=<date>
指定。
--format
: 指定输出格式,可以使用--format=<format
指定,其中可以是一些占位符,如%h代表提交哈希值,%an代表作者名字等。
--stat:
显示每个提交的文件修改统计信息,包括哪些文件被修改、被修改的行数等。
--numstat:
与–stat类似,但只显示文件修改的行数统计信息,不显示具体的修改内容。
--graph:
以图形化的方式展示提交历史,可以更直观地看到分支和合并。
以上是一些常用的git log参数,还有其他参数可以参考git log命令的官方文档。
当使用git log命令时,可以使用不同的参数来定制化输出,以下是一些例子:
git log --oneline: 以一行的形式显示每个提交的简短信息,包括提交哈希值和提交信息的前几个字。
f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
a2c1f1b Initial commit
* commit f7d33c1 (HEAD -> master) |\ Merge: c7f3c3a 9a6b1e1 | | Author: John <john@example.com> | | Date: Sat Apr 10 12:00:00 2021 +0800 | | | | Merge branch 'feature' | | | * commit 9a6b1e1 (feature) | | Author: John <john@example.com> | | Date: Fri Apr 9 12:00:00 2021 +0800 | | | | Add new feature | | * | commit c7f3c3a |/ Author: John <john@example.com> | Date: Thu Apr 8 12:00:00 2021 +0800 | | Update README.md | * commit a2c1f1b Author: John <john@example.com> Date: Wed Apr 7 12:00:00 2021 +0800 Initial commit
f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
a2c1f1b (tag: v1.0) Initial commit
git log --author=John
f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
a2c1f1b Initial commit
git log --grep="bug fix"
f7d33c1 (HEAD -> master) Bug fix: Update README.md
c7f3c3a Add new feature
a2c1f1b Initial commit
git log --since="2021-04-08" --until="2021-04-10"
f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
git log --format="%h %an %s"
f7d33c1 John Update README.md
c7f3c3a John Add new feature
a2c1f1b John Initial commit
commit f7d33c1 (HEAD -> master) Author: John <john@example.com> Date: Sat Apr 10 12:00:00 2021 +0800 Update README.md README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) commit c7f3c3a Author: John <john@example.com> Date: Thu Apr 8 12:00:00 2021 +0800 Add new feature feature.txt | 1 + 1 file changed, 1 insertion(+)
commit f7d33c1 (HEAD -> master)
Author: John <john@example.com>
Date: Sat Apr 10 12:00:00 2021 +0800
Update README.md
1 1 README.md
commit c7f3c3a
Author: John <john@example.com>
Date: Thu Apr 8 12:00:00 2021 +0800
Add new feature
1 0 feature.txt
* commit f7d33c1 (HEAD -> master) |\ Merge: c7f3c3a 9a6b1e1 | | Author: John <john@example.com> | | Date: Sat Apr 10 12:00:00 2021 +0800 | | | | Merge branch 'feature' | | | * commit 9a6b1e1 (feature) | | Author: John <john@example.com> | | Date: Fri Apr 9 12:00:00 2021 +0800 | | | | Add new feature | | * | commit c7f3c3a |/ Author: John <john@example.com> | Date: Thu Apr 8 12:00:00 2021 +0800 | | Update README.md | * commit a2c1f1b Author: John <john@example.com> Date: Wed Apr 7 12:00:00 2021 +0800 Initial commit
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。