git log命令
Git是一种快速、高效的版本控制系统,它可以帮助开发者更好地管理代码的变更。在进行代码开发和维护过程中,我们经常需要查看项目的版本历史记录,以便了解项目的演变过程和方便代码的回滚和比较。而git log
命令就是Git中用来查看提交历史的主要命令之一。
1. git log基本用法
1.1 查看提交历史
通过简单的git log
命令,我们可以查看项目的提交历史。这将会列出所有提交的信息,包括提交的哈希值、作者、提交日期、提交说明等。
$ git log
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
commit a3edc5b1ac5e700a4e2683b27c759d2de750cf74
Author: Jane Smith <janesmith@example.com>
Date: Wed Jan 20 10:15:32 2021 +0800
Refactor code for better performance
commit 5f2741267e0c81e7ad8a81f5b11c45a8562bafd8
Author: John Doe <johndoe@example.com>
Date: Tue Jan 19 14:02:03 2021 +0800
Fix bug in feature B
1.2 限制日志的展示范围
如果项目提交历史很长,或者只需要查看最近几个提交记录,我们可以通过一些选项来限制git log
命令的展示范围。
-n
:限制显示的提交记录数量,例如git log -3
只显示最近的3个提交。
$ git log -3
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
commit a3edc5b1ac5e700a4e2683b27c759d2de750cf74
Author: Jane Smith <janesmith@example.com>
Date: Wed Jan 20 10:15:32 2021 +0800
Refactor code for better performance
commit 5f2741267e0c81e7ad8a81f5b11c45a8562bafd8
Author: John Doe <johndoe@example.com>
Date: Tue Jan 19 14:02:03 2021 +0800
Fix bug in feature B
--since
和--until
:限制显示在某时间范围内的提交记录,例如git log --since="1 week ago"
只显示一周以内的提交。
$ git log --since="1 week ago"
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
--author
:限制显示某位作者提交的记录,例如git log --author="John Doe"
只显示John Doe的提交。
$ git log --author="John Doe"
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
commit 5f2741267e0c81e7ad8a81f5b11c45a8562bafd8
Author: John Doe <johndoe@example.com>
Date: Tue Jan 19 14:02:03 2021 +0800
Fix bug in feature B
1.3 查看变更内容
除了查看提交历史信息外,我们还可以查看每个提交中具体的变更内容,使用-p
选项可以展示每个提交中的具体变更。
$ git log -p
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
diff --git a/file.txt b/file.txt
index 3f58d8b..5a4ef1a 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,4 @@
This is file.txt
+
We are adding a new feature.
commit a3edc5b1ac5e700a4e2683b27c759d2de750cf74
Author: Jane Smith <janesmith@example.com>
Date: Wed Jan 20 10:15:32 2021 +0800
Refactor code for better performance
diff --git a/other_file.py b/other_file.py
index d1e4e49..421ef48 100644
--- a/other_file.py
+++ b/other_file.py
@@ -10,5 +10,5 @@ def main():
# Some code here
-def new_func():
- return "Hello, World!"
+def new_func(name):
+ return f"Hello, {name}"
1.4 美化输出
为了更好地阅读提交历史,我们可以使用--pretty
选项来美化输出。一些常用的--pretty
值包括:
%h
:短哈希值%an
:作者名字%ar
:作者提交相对日期%s
:提交说明
$ git log --pretty=format:"%h - %an, %ar : %s"
e7bf9bc - John Doe, 1 hour ago : Add feature A
a3edc5b1 - Jane Smith, 1 day ago : Refactor code for better performance
5f274126 - John Doe, 2 days ago : Fix bug in feature B
2. git log高级用法
2.1 图形化展示
git log
也支持图形化展示提交历史,使用--graph
选项可以显示提交历史的图形表示,方便查看分支合并情况。
$ git log --graph
* commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
| Author: John Doe <johndoe@example.com>
| Date: Thu Jan 21 09:30:48 2021 +0800
|
| Add feature A
|
* commit a3edc5b1ac5e700a4e2683b27c759d2de750cf74
| Author: Jane Smith <janesmith@example.com>
| Date: Wed Jan 20 10:15:32 2021 +0800
|
| Refactor code for better performance
|
* commit 5f2741267e0c81e7ad8a81f5b11c45a8562bafd8
Author: John Doe <johndoe@example.com>
Date: Tue Jan 19 14:02:03 2021 +0800
Fix bug in feature B
2.2 查看文件变更
我们也可以使用--stat
选项来查看每个提交中修改了哪些文件以及文件的改动情况。
$ git log --stat
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
file.txt | 1 +
1 file changed, 1 insertion(+)
commit a3edc5b1ac5e700a4e2683b27c759d2de750cf74
Author: Jane Smith <janesmith@example.com>
Date: Wed Jan 20 10:15:32 2021 +0800
Refactor code for better performance
other_file.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
commit 5f2741267e0c81e7ad8a81f5b11c45a8562bafd8
Author: John Doe <johndoe@example.com>
Date: Tue Jan 19 14:02:03 2021 +0800
Fix bug in feature B
file.txt | 1 -
1 file changed, 1 deletion(-)
2.3 查看特定文件的提交历史
有时候我们只关心某个特定文件的提交历史,可以使用--follow
选项来查看该文件的演变历史。
$ git log --follow file.txt
commit e7bf9bc5a3b8168685ae81239debf9bd8878cd87 (HEAD -> master)
Author: John Doe <johndoe@example.com>
Date: Thu Jan 21 09:30:48 2021 +0800
Add feature A
commit 5f2741267e0c81e7ad8a81f5b11c45a8562bafd8
Author: John Doe <johndoe@example.com>
Date: Tue Jan 19 14:02:03 2021 +0800
Fix bug in feature B
3. 总结
通过上面的介绍,我们了解了git log
命令在Git版本控制中的重要性和基本用法。通过查看提交历史、限制日志范围、查看变更内容、美化输出、图形化展示等功能,我们可以更好地管理代码的版本演进。同时,了解高级用法如查看文件变更、查看特定文件的提交历史等,能够更精确地找到代码变更的轨迹,提高代码维护的效率。