Git怎么查看提交历史

72次阅读
没有评论

共计 4593 个字符,预计需要花费 12 分钟才能阅读完成。

这篇文章主要介绍“Git 怎么查看提交历史”的相关知识,丸趣 TV 小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Git 怎么查看提交历史”文章能帮助大家解决问题。

查看提交历史

在您创建了多个提交之后,或者如果您克隆了一个具有现有提交历史的存储库,您可能想要回顾一下发生了什么。执行此操作的最基本和最强大的工具是 git log 命令。

这些示例使用了一个名为“simplegit”的非常简单的项目。要获取项目,请运行:

$ git clone https://github.com/schacon/simplegit-progit

当你 git log 在这个项目中运行时,你应该得到如下所示的输出:

$ git logcommit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon  schacon@gee-mail.com Date: Mon Mar 17 21:52:11 2008 -0700
 Change version numbercommit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon  schacon@gee-mail.com Date: Sat Mar 15 16:40:33 2008 -0700
 Remove unnecessary testcommit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon  schacon@gee-mail.com Date: Sat Mar 15 10:31:28 2008 -0700
 Initial commit

默认情况下,不带参数,git log 按时间倒序列出在该存储库中进行的提交; 也就是说,最近的提交首先出现。如您所见,此 Git 命令列出了每个提交及其 SHA-1 校验和、作者姓名和电子邮件、写入日期和提交消息。

该 git log 命令提供了大量不同的选项,可以准确地向您显示您要查找的内容。在这里,我们将向您展示一些最受欢迎的。

更有用的选项之一是 -por –patch,它显示了每次提交中引入的差异 (补丁输出)。您还可以限制显示的日志条目数,例如使用 - 2 仅显示最后两个条目。

$ git log -p -2commit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon  schacon@gee-mail.com Date: Mon Mar 17 21:52:11 2008 -0700
 Change version numberdiff --git a/Rakefile b/Rakefileindex a874b73..8f94139 100644--- a/Rakefile+++ b/Rakefile
@@ -5,7 +5,7 @@ require  rake/gempackagetask 
 spec = Gem::Specification.new do |s|
 s.platform = Gem::Platform::RUBY
 s.name =  simplegit - s.version =  0.1.0 + s.version =  0.1.1 
 s.author =  Scott Chacon 
 s.email =  schacon@gee-mail.com 
 s.summary =  A simple gem for using Git in Ruby code. commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon  schacon@gee-mail.com Date: Sat Mar 15 16:40:33 2008 -0700
 Remove unnecessary testdiff --git a/lib/simplegit.rb b/lib/simplegit.rbindex a0a60ae..47c6340 100644--- a/lib/simplegit.rb+++ b/lib/simplegit.rb
@@ -18,8 +18,3 @@ class SimpleGit end
 end-
-if $0 == __FILE__
- git = SimpleGit.new
- puts git.show
-end

此选项显示相同的信息,但在每个条目之后直接显示差异。这对于代码审查或快速浏览协作者添加的一系列提交期间发生的事情非常有用。您还可以将一系列汇总选项与 git log. 例如,如果您想查看每次提交的一些缩写统计信息,您可以使用以下 –stat 选项:

$ git log --statcommit ca82a6dff817ec66f44342007202690a93763949
Author: Scott Chacon  schacon@gee-mail.com Date: Mon Mar 17 21:52:11 2008 -0700
 Change version number
 Rakefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)commit 085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7
Author: Scott Chacon  schacon@gee-mail.com Date: Sat Mar 15 16:40:33 2008 -0700
 Remove unnecessary test
 lib/simplegit.rb | 5 -----
 1 file changed, 5 deletions(-)commit a11bef06a3f659402fe7563abf99ad00de2209e6
Author: Scott Chacon  schacon@gee-mail.com Date: Sat Mar 15 10:31:28 2008 -0700
 Initial commit
 README | 6 ++++++
 Rakefile | 23 +++++++++++++++++++++++
 lib/simplegit.rb | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+)

如您所见,该 –stat 选项会在每个提交条目下方打印修改文件的列表、更改的文件数量以及这些文件中添加和删除的行数。

另一个非常有用的选项是 –pretty. 此选项将日志输出更改为默认格式以外的格式。一些预构建的选项值可供您使用。oneline 此选项的值将每个提交打印在一行上,这在您查看大量提交时非常有用。此外,short,full,和 fuller 值显示在大致相同的格式,但分别与更少或更多的信息,输出:

$ git log --pretty=onelineca82a6dff817ec66f44342007202690a93763949 Change version number085bb3bcb608e1e8451d4b2432f8ecbe6306e7e7 Remove unnecessary testa11bef06a3f659402fe7563abf99ad00de2209e6 Initial commit

最有趣的选项值是 format,它允许您指定自己的日志输出格式。这在您为机器解析生成输出时特别有用——因为您明确指定格式,您知道它不会随着 Git 的更新而改变:

$ git log --pretty=format: %h - %an, %ar : %s ca82a6d - Scott Chacon, 6 years ago : Change version number085bb3b - Scott Chacon, 6 years ago : Remove unnecessary testa11bef0 - Scott Chacon, 6 years ago : Initial commit

在 oneline 和 format 期权值与另一个特别有用 log 叫选项 –graph。此选项添加了一个漂亮的小 ASCII 图形,显示您的分支和合并历史记录:

 git log --pretty=format: %h %s  --graph
* 2d3acf9 Ignore errors from SIGCHLD on trap
* 5e3ee11 Merge branch  master  of git://github.com/dustin/grit|\
| * 420eac9 Add method for getting the current branch
* | 30e367c Timeout code and tests
* | 5a09431 Add timeout protection to grit
* | e1193f8 Support for heads with slashes in them
* d6016bc Require time for xmlschema
* 11d191e Merge branch  defunkt  into local

限制日志输出

除了输出格式选项之外,git log 还有许多有用的限制选项; 也就是说,让您只显示提交子集的选项。您已经看到了一个这样的选项 –2 选项,它只显示最后两次提交。事实上,你可以做 - n , wheren 是任何整数来显示最后一次 n 提交。实际上,您不太可能经常使用它,因为默认情况下 Git 将所有输出都通过寻呼机进行管道传输,因此您一次只能看到一页日志输出。

但是,诸如 –since 和 之类的限时选项 –until 非常有用。例如,此命令获取最近两周的提交列表:

$ git log --since=2.weeks

此命令适用于多种格式 – 您可以指定特定日期,例如 2008-01-15,或相对日期,例如 2 years 1 day 3 minutes ago。

您还可以过滤列表以匹配某些搜索条件的提交。该 –author 选项允许您过滤特定作者,该 –grep 选项允许您在提交消息中搜索关键字。

另一个真正有用的过滤器是 - S 选项 (通俗地称为 Git 的“pickaxe”选项),它接受一个字符串并仅显示那些更改了该字符串出现次数的提交。例如,如果您想查找添加或删除对特定函数的引用的最后一次提交,您可以调用:

$ git log -S function_name

git log 作为过滤器传递的最后一个真正有用的选项是路径。如果指定目录或文件名,则可以将日志输出限制为对这些文件进行更改的提交。这始终是最后一个选项,通常以双破折号 (–) 开头,以将路径与选项分开:

$ git log -- path/to/file

关于“Git 怎么查看提交历史”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注丸趣 TV 行业资讯频道,丸趣 TV 小编每天都会为大家更新不同的知识点。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-07-18发表,共计4593字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)