当前位置: 首页 > news >正文

git列出提交记录的文件路径

一、如何列出某次提交记录中修改过/新增的文件?

方法1:使用 git diff-tree 命令来查看某个提交记录中修改过/新增的文件。具体来说,你可以使用以下命令:

git diff-tree --no-commit-id --name-only -r <commit-hash>

命令解释

  • git diff-tree:比较提交记录与其父提交记录的差异。
  • --no-commit-id:不显示提交的哈希值。
  • --name-only:仅显示文件名。
  • -r:递归显示所有文件的差异。

示例

假设你想查看提交记录 a1b2c3d4 中修改过的文件,可以使用以下命令:

git diff-tree --no-commit-id --name-only -r a1b2c3d4

示例输出

src/main/java/com/example/App.java
src/main/resources/application.properties
README.md

这种方式只会列出该次提交中实际修改过的文件,而不是所有文件。

方法2:详细的查看文件变更

如果你还想查看每个文件具体的修改内容,可以使用 git show 命令:

git show --name-only <commit-hash>

这将显示提交记录的详细信息,包括提交信息、作者、日期以及文件的修改内容。

示例

git show --name-only a1b2c3d4

输出示例

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0
Author: Your Name <your.email@example.com>
Date:   Mon Jul 1 12:34:56 2023 +0000Initial commitsrc/main/java/com/example/App.java
src/main/resources/application.properties
README.md

二、如何列出多次提交记录中修改过/新增的文件?

如果你想查看多个提交记录中修改的文件,可以使用 git log 结合 git diff,或者直接使用 git log--name-only 选项。以下是几种方法来查看多个提交记录中修改的文件。

方法1:使用 git log--name-only 选项

你可以使用 git log --name-only 来列出多个提交记录中修改的文件。这个命令将显示每个提交记录及其修改的文件。

git log --name-only --oneline

示例

git log --name-only --oneline

示例输出

a1b2c3d4e5 Initial commit
src/main/java/com/example/App.java
src/main/resources/application.properties
README.mdb1c2d3e4f5 Added new feature
src/main/java/com/example/Feature.java

方法2(推荐):使用 git diff 比较多个提交记录

如果你想查看特定范围的提交记录中修改的文件,可以使用 git diff 命令。例如,查看两个提交记录之间的差异:时间小到大,左开右闭

git diff --name-only <commit-hash1> <commit-hash2>

示例

假设你想查看从提交 a1b2c3d4b1c2d3e4 之间修改的文件:

git diff --name-only a1b2c3d4 b1c2d3e4

示例输出

src/main/java/com/example/App.java
src/main/java/com/example/Feature.java
src/main/resources/application.properties
README.md

方法3:查看最近的N次提交中的修改文件

如果你想查看最近的N次提交中的修改文件,可以使用以下命令:

git log -n <N> --name-only --oneline

示例

查看最近的5次提交中的修改文件:

git log -n 5 --name-only --oneline

示例输出

b1c2d3e4f5 Added new feature
src/main/java/com/example/Feature.javaa1b2c3d4e5 Initial commit
src/main/java/com/example/App.java
src/main/resources/application.properties
README.md

方法4:过滤唯一的文件列表

如果你想过滤出一段时间内所有唯一修改过的文件,可以结合使用 git logsortuniq 命令。例如,查看最近的10次提交中的唯一修改文件:

由于有uniq命令,需要在 git bash中执行

git log -n 10 --name-only --pretty=format: | sort | uniq

示例

查看最近的10次提交中的唯一修改文件:

git log -n 10 --name-only --pretty=format: | sort | uniq

示例输出

README.md
src/main/java/com/example/App.java
src/main/java/com/example/Feature.java
src/main/resources/application.properties

这些方法可以帮助你查看多个提交记录中修改的文件,选择适合你需求的方法即可。

相关文章:

  • 论文翻译 | LEAST-TO-MOST: 从最少到最多的提示使大型语言模型中的复杂推理成为可能
  • 2024-07-14 Unity插件 Odin Inspector1 —— 插件介绍
  • LeetCode 每日一题 2024/7/8-2024/7/14
  • Spring-Spring、IoC、DI、注解开发
  • Qt学生管理系统-- 数据库课程设计(付源码)
  • Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术
  • linux彻底卸载docker
  • Qt 实战(2)搭建开发环境 | 2.3、qmake详解
  • Java中线程启动:start()与run()方法的区别
  • 2024-07-12 Unity AI状态机1 —— 框架介绍
  • 案例|LabVIEW连接S7-1200PLC
  • pytorch说明
  • Java 实验三:数组操作以及Java中的方法
  • 解决方案架构师系列 - AWS - AWS Amplify 服务功能介绍
  • 【Linux取经之路】Linux常见指令
  • CEF与代理
  • Docker容器管理
  • emacs初体验
  • HTTP 简介
  • Lsb图片隐写
  • mysql常用命令汇总
  • Python中eval与exec的使用及区别
  • session共享问题解决方案
  • Vue 重置组件到初始状态
  • vue-router 实现分析
  • vue脚手架vue-cli
  • Vue全家桶实现一个Web App
  • 成为一名优秀的Developer的书单
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 使用Tinker来调试Laravel应用程序的数据以及使用Tinker一些总结
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • #Lua:Lua调用C++生成的DLL库
  • #mysql 8.0 踩坑日记
  • (02)Hive SQL编译成MapReduce任务的过程
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (八十八)VFL语言初步 - 实现布局
  • (二)十分简易快速 自己训练样本 opencv级联lbp分类器 车牌识别
  • (附源码)node.js知识分享网站 毕业设计 202038
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (九)c52学习之旅-定时器
  • (四)软件性能测试
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (一)插入排序
  • ./configure,make,make install的作用(转)
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net 反编译_.net反编译的相关问题
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • /etc/sudoer文件配置简析
  • ?
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析