git log详解

文章目录

  • git log -p
  • 其他常用的参数

git log是用来查看历史提交记录的,那么这些记录包含什么呢?如果你不指定分支或者master,默认情况下git log显示的是目前你HEAD的位置的git提交日志,默认不加参数,git log显示如下:

  • commit 哈希id
  • 提交的Author信息
  • 提交的日期和时间
  • commit info信息

完整用法请看官方文档,有中文翻译:https://git-scm.com/docs/git-log/zh_HANS-CN

git log -p

要查看特定目录下最近的代码变更,可以使用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 +0800Update README.mddiff --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等来筛选需要查看的提交。

其他常用的参数

  1. --oneline : 用一行的形式显示每个提交的简短信息,包括提交哈希值和提交信息的前几个字。

  2. --graph : 以图形化的方式展示提交历史,可以更直观地看到分支和合并。

  3. --decorate : 显示所有标签和分支的名称。

  4. --author : 只显示指定作者的提交记录,可以使用--author=<author_name>--author=<author_email> 指定。

  5. --grep : 只显示包含指定字符串的提交记录,可以使用--grep=<string>指定。

  6. --since/--until : 只显示指定时间范围内的提交记录,可以使用--since=<date>或--until=<date>指定。

  7. --format: 指定输出格式,可以使用--format=<format指定,其中可以是一些占位符,如%h代表提交哈希值,%an代表作者名字等。

  8. --stat: 显示每个提交的文件修改统计信息,包括哪些文件被修改、被修改的行数等。

  9. --numstat: 与–stat类似,但只显示文件修改的行数统计信息,不显示具体的修改内容。

  10. --graph: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。
    以上是一些常用的git log参数,还有其他参数可以参考git log命令的官方文档。
    当使用git log命令时,可以使用不同的参数来定制化输出,以下是一些例子:

  11. git log --oneline: 以一行的形式显示每个提交的简短信息,包括提交哈希值和提交信息的前几个字。

f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
a2c1f1b Initial commit
  1. git log --graph: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。
*   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 a2c1f1bAuthor: John <john@example.com>Date:   Wed Apr 7 12:00:00 2021 +0800Initial commit
  1. git log --decorate: 显示所有标签和分支的名称。
f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
a2c1f1b (tag: v1.0) Initial commit
  1. git log --author: 只显示指定作者的提交记录,可以使用–author=<author_name>或–author=<author_email>指定。
git log --author=Johnf7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
a2c1f1b Initial commit
  1. git log --grep: 只显示包含指定字符串的提交记录,可以使用–grep=指定。
git log --grep="bug fix"f7d33c1 (HEAD -> master) Bug fix: Update README.md
c7f3c3a Add new feature
a2c1f1b Initial commit
  1. git log --since/–until: 只显示指定时间范围内的提交记录,可以使用–since=或–until=指定。
git log --since="2021-04-08" --until="2021-04-10"f7d33c1 (HEAD -> master) Update README.md
c7f3c3a Add new feature
  1. git log --format: 指定输出格式,可以使用–format=指定,其中可以是一些占位符,如%h代表提交哈希值,%an代表作者名字等。
git log --format="%h %an %s"f7d33c1 John Update README.md
c7f3c3a John Add new feature
a2c1f1b John Initial commit
  1. git log --stat: 显示每个提交的文件修改统计信息,包括哪些文件被修改、被修改的行数等。
commit f7d33c1 (HEAD -> master)
Author: John <john@example.com>
Date:   Sat Apr 10 12:00:00 2021 +0800Update README.mdREADME.md | 2 +-1 file changed, 1 insertion(+), 1 deletion(-)commit c7f3c3a
Author: John <john@example.com>
Date:   Thu Apr 8 12:00:00 2021 +0800Add new featurefeature.txt | 1 +1 file changed, 1 insertion(+)
  1. git log --numstat: 与–stat类似,但只显示文件修改的行数统计信息,不显示具体的修改内容。
commit f7d33c1 (HEAD -> master)
Author: John <john@example.com>
Date:   Sat Apr 10 12:00:00 2021 +0800Update README.md1       1       README.mdcommit c7f3c3a
Author: John <john@example.com>
Date:   Thu Apr 8 12:00:00 2021 +0800Add new feature1       0       feature.txt
  1. git log --graph: 以图形化的方式展示提交历史,可以更直观地看到分支和合并。
*   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 a2c1f1bAuthor: John <john@example.com>Date:   Wed Apr 7 12:00:00 2021 +0800Initial commit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/814560.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++风云录】融入虚拟现实的魅力:借助 C++ 库打造沉浸式的游戏体验和交互效果

点燃创造力&#xff1a;解锁 C 库的潜力&#xff0c;构建令人惊叹的物理模拟和游戏应用 前言 在现代的游戏和虚拟现实应用中&#xff0c;物理模拟和真实的交互体验是不可或缺的要素。为了实现逼真的物理效果和流畅的游戏体验&#xff0c;开发人员需要依赖强大的物理模拟库和游…

如何在ADS中实现数据的导入和导出

1 MDIF接口 ADS提供了一种通用的MDIF格式文件&#xff0c;允许用户使用一个通用的数据接口实现导入和导出的功能&#xff0c;其Help文件中的简介如下&#xff1a; 2 数据的导入 实现数据导入功能之前&#xff0c;数据必须遵从一定的标准格式&#xff0c;如下图所示&#xff0c;…

有哪些更复杂的并发编程概念可以进一步学习?

并发集合&#xff1a;Java 提供了一套并发集合类&#xff0c;如 ConcurrentHashMap&#xff0c;ConcurrentLinkedQueue 和 CopyOnWriteArrayList 等&#xff0c;可以在并发环境下使用&#xff0c;而不需担心线程安全问题。 原子变量: java.util.concurrent.atomic 包提供了一组…

自动化运维(二十八)Ansible 实战之最佳安全实践

Ansible是直接操作我们服务器的工具&#xff0c;Ansible是否安全关系到整个生产和办公环境的数据安全&#xff0c;因此确保 Ansible 安全地运行非常重要。以下是有关 Ansible 安全的详细介绍&#xff0c;包括如何安全地使用 Ansible 和一些最佳安全实践。 1. Ansible 安全概念…

[大模型] BlueLM-7B-Chat WebDemo 部署

BlueLM-7B-Chat WebDemo 部署 模型介绍 BlueLM-7B 是由 vivo AI 全球研究院自主研发的大规模预训练语言模型&#xff0c;参数规模为 70 亿。BlueLM-7B 在 C-Eval 和 CMMLU 上均取得领先结果&#xff0c;对比同尺寸开源模型中具有较强的竞争力(截止11月1号)。本次发布共包含 7…

我与C++的爱恋:类与对象(二)

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;我与C的爱恋 ​ 本篇着重介绍构造函数和析构函数&#xff0c;剩余内容在下篇解答。 一、类的默认成员函数 如果一个类中什么成员都没有&#xff0c;简称为空类。 任何类在什么都不写时…

ThingsBoard通过服务端获取客户端属性或者共享属性

MQTT基础 客户端 MQTT连接 通过服务端获取属性值 案例 1、首先需要创建整个设备的信息&#xff0c;并复制访问令牌 ​2、通过工具MQTTX连接上对应的Topic 3、测试链接是否成功 4、通过服务端获取属性值 5、在客户端查看对应的客户端属性或者共享属性的key 6、查看整个…

java的gradle,maven工程中使用selenium

一、下载selenium库 &#xff08;1&#xff09;gradle工程 工程中会有一个build.gradle.kts的文件&#xff0c;这个文件可以定制 Gradle 的行为 在文件中添加下面代码&#xff0c;然后sync // implementation ("org.seleniumhq.selenium:selenium-java:4.19.1") …

基于spring boot的留守儿童爱心管理系统

基于spring boot的留守儿童爱心管理系统设计与实现 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09; 数据库工具&#xff1a;Navicat11 开…

《剑指 Offer》专项突破版 - 面试题 108 : 单词演变(C++ 实现)

目录 前言 单向广度优先搜索 双向广度优先搜索 前言 题目链接&#xff1a;单词演变 题目&#xff1a; 输入两个长度相同但内容不同的单词&#xff08;beginWord 和 endWord&#xff09;和一个单词列表&#xff08;wordList&#xff09;&#xff0c;求从 beginWord 到 end…

HTML5+CSS3小实例:荧光图标悬停效果

实例:荧光图标悬停效果 技术栈:HTML+CSS 字体图标库:font-awesome 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=d…

Django的APP应用更名(重命名)流程

将Django中的一个现有APP更名是一个需要谨慎操作的过程&#xff0c;因为它涉及到多个文件和配置的更新。下面是详细的步骤和一些补充细节&#xff0c;帮助你更顺利地完成APP重命名&#xff1a; 1. 修改APP名称及相关引用 更改APP目录名称&#xff1a; 首先&#xff0c;重命名…

vue3<script setup>中点击li为当前li添加一个类名active

在 Vue 3 的 <script setup> 语法中&#xff0c;可以使用 ref 或 reactive 来追踪和管理 DOM 元素的引用。然后&#xff0c;你可以使用事件监听器&#xff08;如 click&#xff09;来响应点击事件&#xff0c;并为当前点击的 <li> 元素添加 active 类名。 <tem…

T620折腾 —— 给虚拟机配置大页

虚拟机访问物理内存需要经过两级页表翻译,如果使用大页,一方面可以降低缺页发生的频率,同时也可以降低TLB Miss的频率,对于提升虚拟机的运行性能有一定作用,下面尝试开启这一功能: 给大页预留内存 使用下面的命令查看Host预留了多少大页: $ sysctl vm.nr_hugepages如…

VulNyx - Ready

目录 信息收集 arp nmap nikto Redis未授权访问漏洞 漏洞扫描 redis-cli 写入公钥 ssh连接 get root.txt 信息收集 arp ┌─[rootparrot]─[~/vulnyx] └──╼ #arp-scan -l Interface: enp0s3, type: EN10MB, MAC: 08:00:27:16:3d:f8, IPv4: 192.168.9.102 Starti…

JAVA学习-注解.基本语法

Java注解是一种用于为程序元素&#xff08;如类、方法、字段、参数等&#xff09;添加元数据的标记。它们提供了一种简单而又强大的方式来在源代码中插入元数据&#xff0c;以及编译器、工具和框架等在处理程序时使用这些元数据。 一、Java注解的基本语法如下&#xff1a; 1.…

ZFT9 7VE8033同期脉冲发送装置 JSOEF约瑟

系列型号 ZFT9(PIG) 7VE8033同期脉冲发送装置; ZFT9(PIG) 7VE8043同期脉冲发送装置; ZFT9 7VE8033同期脉冲发送装置; ZFT9 7VE8043同期脉冲发送装置; 用途&#xff1a; ZFT9(PIG)同期脉冲发送装置用于船舶的三相系统&#xff0c;根据发电机和电力系统之间电压差、相位差、频率…

SAP SD学习笔记05 - SD中的一括处理(集中处理),出荷和请求的冻结(替代实现承认功能)

上一章讲了SD的重要概念&#xff0c;比如出荷Plant&#xff08;交货工厂&#xff09;&#xff0c;出荷Point&#xff08;装运点&#xff09;&#xff0c;输送计划&#xff0c;品目的可用性检查&#xff0c;一括纳入/分割纳入&#xff0c;仓库管理等。 SAP SD学习笔记04 - 出荷…

凡泰极客亮相2024 亚马逊云科技出海全球化论坛,为企业数字化出海赋能

随着「不出海&#xff0c;即出局」登上热搜榜单&#xff0c;企业出海已成燎原之势&#xff0c;3月29日&#xff0c;2024 亚马逊云科技出海全球化论坛在深圳成功举办&#xff0c;凡泰极客创始人梁启鸿受邀出席&#xff0c;并以 「App 2.0&#xff1a;以SuperApp构建智能数字生态…

K8s下部署grafana

1. 系统要求 最小化的软硬件要求 最小化硬件要求 磁盘空间: 1 GB内存: 750 MiB (approx 750 MB)CPU: 250m (approx 2.5 cores) 2. k8s部署grafana步骤 1) 创建名字空间 kubectl create namespace my-grafana 2) 创建yaml vim grafana.yaml yaml包含如下三个资源对象 Ob…