Git--log 查看提交历史

2023-05-16

注意:

Author 表示对代码做出修改的人
Date 表示对代码做出修改的时间
Commit 表示提交代码的人,
CommitDate 表示提交代码的时间
实际工作中,Author 并不一定就是Commit

另外:在查看提交摘要或者详情等情况下可能会出现 :,这个冒号表示还有没展示完的内容,如果你想继续查看内容,就敲击键盘上的回车键;如果你想退出:,可以敲击键盘上的 q 。如下图:

git中查看提交历史的话,使用的是 git log命令,具体命令及含义如下:

1. git log
查看全部提交历史 。 由于命令窗口的限制,如果提交历史过多,可能无法完全显示在屏幕上,这时候,可以敲击回车键继续查看。如下图:


2. git log -p
查看全部提交历史并展示每次修改的内容

3. git log -2
查看最近2次提交历史(注意:后面的数字是可以自定义的,也就是说,这种写法是 git log -n 的体现)

4. git log -p -2
查看最近2次提交历史并展示修改的内容

5. git log --stat
查看提交历史,并展示摘要内容(摘要会列出修改的文件以及每个文件中修改了多少行),如下图:


6. git log --shortstat
查看提交历史,并显示摘要内容(只是统计并展示修改了多少内容儿不显示具体哪些文件做出了修改),如下图:


7. git log --pretty xxx
该命令可以用来指定使用不同于默认格式的方式展示提交历史,后面的xxx表示具体的取值,取值有:oneline , short , full , fuller 等

7.1 git log --pretty=oneline
执行该命令后会把提交历史的 commit 描述以及校验和 显示在同一行,并且省略默认格式下的其他内容,具体如下图:


7.2 git log --pretty=short
执行该命令后,只是比默认的格式少了Data日期的描述,具体如下图:


7.3 git log -- pretty=full
执行该命令后,与默认的格式相比少了Data日期的描述,但是增加了commit 提交人信息,如下图:


7.4 git log --pretty=fuller
执行该命令之后,效果如下:


8. 其他用法:
8.1 git log --name-only
仅在默认格式后面展示已经修改的文件,如下图:


8.2 git log --abbrev-commit
仅显示 SHA-1 的前几个字符,而非全部字符(这个 SHA-1 字符就是指的校验和,我习惯称为commit id),如下图:


8.3 git log --relative-date
以相对当前的时间展示提交历史,如下图:


8.4 git log --graph
在展示提交历史前面加入简单的ASCII图形,区分每次提交历史,如图:


8.5 git log --oneline
log后面直接跟 --oneline 时,显示短的 校验和,并与提交描述显示在同一行,效果如下


8.6 git log --oneline --graph
以树形结构查看短描述和校验值

8.7 git log -- author=用户名
如:git log --author=CnPeng 就会展示出CnPeng这个用户的修改历史 。注意:这里的用户名,是初始化git 时传入的name . 运行效果如下图:


8.8 git log -- commitor=用户名
如:git log --commitor=CnPeng 就会展示出CnPeng这个用户的提交历史。注意:这里的用户名,是初始化git 时传入的name . 效果图参考上面的author图

8.9 git log --since=时间
如:git log --since=1days , 表示,展示1天前的提交历史,具体的时间取值,可以有如下格式: xxxdays , xxxweeks , 2016-11-25 , 或 2 years 1 day 3 minutes ago ,效果图如下:


另外,除了可以使用 --since , 也可以使用 -- after , --util , --before , 取值方式相同

也可以使用如下这种组合模式:
git log --pretty="%h - %s" --author=gitster --since="2008-10-01" \ --before="2008-11-01" --no-merges -- t/

上面的组合模式中,%h , %s 是占位符, 详细的占位符以及含义如下:

%H 提交对象(commit)的完整哈希字串
%h 提交对象的简短哈希字串
%T 树对象(tree)的完整哈希字串
%t 树对象的简短哈希字串
%P 父对象(parent)的完整哈希字串
%p 父对象的简短哈希字串
%an 作者(author)的名字
%ae 作者的电子邮件地址
%ad 作者修订日期(可以用 -date= 选项定制格式)
%ar 作者修订日期,按多久以前的方式显示
%cn 提交者(committer)的名字
%ce 提交者的电子邮件地址
%cd 提交日期
%cr 提交日期,按多久以前的方式显示
%s 提交说明

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git--log 查看提交历史 的相关文章

  • 致命:无法将 HEAD 解析为有效引用

    我正进入 状态fatal Failed to resolve HEAD as a valid ref 每当我尝试承诺时 我努力了 echo ref refs heads master gt git HEAD 但它不起作用 也尝试过 git
  • 我在哪里? *(无分支)

    我已经熟悉了创建 合并和删除分支 我想知道我在哪里 这样我就不会将工作提交到错误的分支 我用git branch a看看我有哪些分支 我认为星号 显示我当前所在的分支 当我得到以下信息时 这意味着什么 no branch master or
  • GIT - 推送到 (GitHub) origin master 没有任何作用

    我已经分叉了某人的 GIT 存储库 https github com nippysaurus toodledo objc 将其克隆到我的本地计算机 显示带有以下信息的来源 remote origin Fetch URL https emai
  • 清理远程 Git 分支

    我已经将 SVN 存储库移至 Git 可能由于多次克隆 我现在只剩下一堆看起来像这样的分支 BranchA origin BranchA remotes BranchA remotes origin BranchA remotes orig
  • 为什么 git-svn 应该积极搜索旧历史?

    当我运行 git svn clone s 时发生了一些奇怪的事情 尽管以下信息告诉我们不要惊慌 但我想知道为什么会出现这种 svn 错误 为什么这个路径不存在 是被别人删除了吗 如果是 为什么 git svn 应该积极搜索旧历史记录 Ini
  • 在 Windows 上使用 Git - 意外丢失了大量工作。我可以拿回来吗?

    我很困惑 我想我已经失去了几个小时的工作时间 我之前在 Git 中编辑了一个文件 我保存了它 但没有提交 我确实做了一些其他文件更改 并提交并推送了它们 然而 有一个文件被搞乱了 所以我单击了最后一次成功的提交 然后按了 回滚到此提交 令我
  • GitHub Pages (github.io) doxygen 生成的页面未找到 (404)

    我不明白为什么找不到 doxygen 生成的页面 404 它在Github存储库中的路径是https github com AubinMahe AubinMahe github io blob master doxygen html dd
  • 更改先前提交的作者姓名:快进推送被拒绝

    我最近在 GitHub 上打开了一个存储库 我是 Git 新手 与新人一样 我使用默认名称和电子邮件进行提交 按照最佳菜鸟传统 我发现五次提交为时已晚 现在乐趣开始了 因为我开始搜索有关如何更改这些提交的作者和提交者名称的信息 美好的 我基
  • 如何让 git 显示作者日期指定日期范围内的提交?

    显然this https stackoverflow com a 11189286 281545 git log all after
  • 如何停用 Xcode git 功能? (删除 git 集成)

    我的 Xcode 项目位于 git 上 但我不喜欢 Xcode git 集成 有时 我有来自 Xcode 的错误 https stackoverflow com questions 7388560 error fatal not a git
  • Smartgit:自动插入提交消息

    有没有办法使用钩子脚本在 Smartgit 中自动插入提交消息 重击 如果用户提交了他的更改 我想预加载提交消息字段 我没有看到任何SmartGit配置 http www syntevo com smartgit documentation
  • VS Code 在交互式变基期间不会等待我 [重复]

    这个问题在这里已经有答案了 如果我使用交互式变基git rebase i使用为 Git 配置的默认编辑器 一切都运行良好 如果我在我的全局中添加以下内容 gitconfig core editor C Program Files x86 M
  • 创建多个 git 分支的联合分支

    我希望能够在现有分支之上分层其他分支 并独立修改这些分支 这很有用 例如 允许将各个子项目的二进制文件统一到同一个项目中bin目录 一般来说 给定的文件仅存在于一层中 理想情况下 我想我会使用 unionfs 来完成此任务 但它必须以某种方
  • 如何在源代码管理中存储 Visual Studio 的调试配置

    Visual Studio 的调试配置存储在 user文件是用户特定的并且传统上被源代码管理忽略 我对工作目录参数感兴趣 我需要它在程序员的机器上保持一致 并且它具有以下价值 outDir而不是默认的 ProjectDir 我怎样才能解决这
  • 为什么从网上下载Git 2.0,总是得到1.9.4的安装包?

    为什么从网上下载Git 2 0 总是得到1 9 4的安装包 为什么你不能在互联网上的任何地方找到一个不仅标记为 2 0 而且你下载的安装存档也标记为这样的 Git 安装程序包 例如 这个2 1 3 站点 http git scm com d
  • Git撤销本地分支删除

    我刚刚删除了错误的分支 并进行了一些我需要的实验性更改git branch D branchName 如何恢复分支 您可以使用git reflog http git scm com docs git reflog查找分支最后一次提交的 SH
  • 如何在现有裸存储库中创建引用日志信息

    您可能已经知道 默认情况下 git 不会为新的裸存储库启用引用日志更新 问题是 我有一个很长的历史存储库 但它是在我设置 logAllRefUpdates 标志之前创建的 现在我希望其他应用程序可以使用该信息 如何通过对现有存储库进行最少的
  • 有什么方法可以从提交的消息中获取提交的 SHA 值吗?

    当做一个git tag 我并不总是擅长记住 HEAD 6 例如 是包含的还是排他的 鉴于我的大多数提交都以问题号为前缀 我想知道是否有一些神奇的命令可以从其消息的一部分中搜索提交 SHA 我知道这很容易做到git log并从那里开始工作 但
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • Git - 使用过滤器分支删除带有空变更集的提交

    如何使用 git filter branch 删除没有变更集的提交 我使用以下方法重写了我的 git 历史记录 git filter branch tree filter rm r f my folder f HEAD 效果很好 但现在我有

随机推荐