git学习------>如何用git log命令来查看某个指定文件的提交历史记录

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:        有时候接手一份新代码时,看到某些文件的改动,但不清楚这个改动的作者和原因,想查看该文件的具体提交历史记录。       今天一个同事是这样做的,直接敲git log命令,然后再使用vim命令的搜索关键字的方法来查看该文件的提交记录,如下所示:例如...

       有时候接手一份新代码时,看到某些文件的改动,但不清楚这个改动的作者和原因,想查看该文件的具体提交历史记录。

       今天一个同事是这样做的,直接敲git log命令,然后再使用vim命令的搜索关键字的方法来查看该文件的提交记录,如下所示:

例如:我想查看frameworks/base/packages/SystemUI/AndroidManifest.xml该文件的提交记录,敲了git log命令后,直接按“/”然后加入该文件的路径,后就可以搜索该文件名作为关键字,然后按N和Ctrl+N进行上下搜索结果切换,如下所示:


这样的话,很慢很繁琐,效率比较慢。


下面我介绍一个比较快捷的方法来查看某个指定文件的提交记录,使用的还是git log命令,只是加了一些参数而已。


git log --pretty=oneline 文件名

例如:想搜索刚才的frameworks/base/packages/SystemUI/AndroidManifest.xml文件的提交记录,就可以使用命令:

oyp@buildServer3:~/E580$ git log --pretty=oneline frameworks/base/packages/SystemUI/AndroidManifest.xml
34b7ac981a39193ca78e0d4673ce66515c23988d     [add a new feature to show the battery voltage value and level]     1.Support show the level of 
c1d6879f098775f1d703dfcfe814c4d726be47ad [Create MT6753-6M AP source repository]


如上所示,打印出来的就是针对文件frameworks/base/packages/SystemUI/AndroidManifest.xml文件的所有的改动历史,每一行最前面的那一长串数字就是每次提交形成的哈希值,接下来使用git show即可显示具体的某次的改动的修改。


下面就可以使用git show 命令查看具体的修改详情了。如:

git show <git提交版本号> <文件名>

 git show 34b7ac981a39193ca78e0d4673ce66515c23988d frameworks/base/packages/SystemUI/AndroidManifest.xml
这样指定版本号,指定文件的就可以直接查看该文件的修改详情,不要看该版本号其他文件的修改。如下所示:

oyp@buildServer3:~/E580$ git show 34b7ac981a39193ca78e0d4673ce66515c23988d frameworks/base/packages/SystemUI/AndroidManifest.xml
commit 34b7ac981a39193ca78e0d4673ce66515c23988d
Author: oyp <oyp@runbo.net>
Date:   Mon Nov 30 19:47:48 2015 +0800

        [add a new feature to show the battery voltage value and level]
        1.Support show the level of battery voltage (0-5 levels).
        2.Support show the battery voltage value (accurate to two decimal places).
    
        Appllicable Project: E580
        Appllicable model: All Except IKE
    
        new file:   frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_0.png
        new file:   frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_1.png
        new file:   frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_2.png
        new file:   frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_3.png
        new file:   frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_4.png
        new file:   frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_5.png
        new file:   frameworks/base/packages/SystemUI/src/com/android/systemui/MyBatteryService.java
        new file:   frameworks/base/packages/SystemUI/src/com/android/systemui/MyBootCompletedReceiver.java
    
        modified:   frameworks/base/packages/SystemUI/AndroidManifest.xml
        modified:   frameworks/base/packages/SystemUI/res/layout/system_icons.xml
        modified:   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
        modified:   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
        modified:   frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java

diff --git a/frameworks/base/packages/SystemUI/AndroidManifest.xml b/frameworks/base/packages/SystemUI/AndroidManifest.xml
old mode 100644
new mode 100755
index dfdc14c..5fb3545
--- a/frameworks/base/packages/SystemUI/AndroidManifest.xml
+++ b/frameworks/base/packages/SystemUI/AndroidManifest.xml
@@ -126,7 +126,11 @@
 
     <!-- M: Add for data sim switch -->
     <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
-
+    
+    <!-- added by ouyang start 2015-11-30 -->
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />  
+       <!-- added by ouyang end 2015-11-30 -->
+       
     <application
         android:name=".SystemUIApplication"
         android:persistent="true"
@@ -407,5 +411,14 @@
                 <action android:name="android.intent.action.LOCALE_CHANGED" />
             </intent-filter>
         </receiver>
+        
+        <!-- added by ouyang start 2015-11-30 -->
+        <receiver android:name=".MyBootCompletedReceiver" >
+           <intent-filter>    
+                <action android:name="android.intent.action.BOOT_COMPLETED"/>    
+            </intent-filter>    
+        </receiver>
+        <service android:name=".MyBatteryService"/>
+        <!-- added by ouyang end 2015-11-30 -->
     </application>
 </manifest>



这样的话,很高效、快速的查看指定文件的提交记录和记录详情。


         ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

====================================================================================






相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
调度
FreeRTOS学习日志 - 第一天
这就是我的FreeRTOS学习日志 - 第一天的内容,明天继续探索这片实时操作系统的广阔海洋。+
54 12
|
3月前
|
运维 应用服务中间件 nginx
docker运维查看指定应用log文件位置和名称
通过本文的方法,您可以更高效地管理和查看Docker容器中的日志文件,确保应用运行状态可控和可监测。
288 28
|
3月前
|
开发工具 git 索引
怎么取消对project.private.config.json这个文件的git记录
通过以上步骤,您可以成功取消对 `project.private.config.json`文件的Git记录。这样,文件将不会被包含在未来的提交中,同时仍保留在您的工作区中。
102 28
|
6月前
|
存储 Oracle 关系型数据库
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
本文介绍了MySQL InnoDB存储引擎中的数据文件和重做日志文件。数据文件包括`.ibd`和`ibdata`文件,用于存放InnoDB数据和索引。重做日志文件(redo log)确保数据的可靠性和事务的持久性,其大小和路径可由相关参数配置。文章还提供了视频讲解和示例代码。
292 11
【赵渝强老师】MySQL InnoDB的数据文件与重做日志文件
|
4月前
|
前端开发 Java 开发工具
Git使用教程-将idea本地Java等文件配置到gitte上【保姆级教程】
本内容详细介绍了使用Git进行版本控制的全过程,涵盖从本地仓库创建到远程仓库配置,以及最终推送代码至远程仓库的步骤。
134 0
|
6月前
|
SQL Oracle 关系型数据库
【赵渝强老师】Oracle的控制文件与归档日志文件
本文介绍了Oracle数据库中的控制文件和归档日志文件。控制文件记录了数据库的物理结构信息,如数据库名、数据文件和联机日志文件的位置等。为了保护数据库,通常会进行控制文件的多路复用。归档日志文件是联机重做日志文件的副本,用于记录数据库的变更历史。文章还提供了相关SQL语句,帮助查看和设置数据库的日志模式。
172 1
【赵渝强老师】Oracle的控制文件与归档日志文件
|
5月前
|
存储 SQL 关系型数据库
【赵渝强老师】PostgreSQL的运行日志文件
PostgreSQL的物理存储结构包括数据文件、日志文件等。运行日志默认未开启,需配置`postgresql.conf`文件中的相关参数如`log_destination`、`log_directory`等,以记录数据库状态、错误信息等。示例配置中启用了CSV格式日志,便于管理和分析。通过创建表操作,可查看生成的日志文件,了解具体日志内容。
180 3
|
6月前
|
SQL 关系型数据库 MySQL
【赵渝强老师】MySQL的全量日志文件
MySQL全量日志记录所有操作的SQL语句,默认禁用。启用后,可通过`show variables like %general_log%检查状态,使用`set global general_log=ON`临时开启,执行查询并查看日志文件以追踪SQL执行详情。
123 4
|
6月前
|
监控 Linux 开发者
如何在 Linux 中优雅的使用 head 命令,用来看日志简直溜的不行
`head` 命令是 Linux 系统中一个非常实用的工具,用于快速查看文件的开头部分内容。本文介绍了 `head` 命令的基本用法、高级用法、实际应用案例及注意事项,帮助用户高效处理文件和日志,提升工作效率。
120 7
|
6月前
|
Oracle 关系型数据库 数据库
【赵渝强老师】Oracle的参数文件与告警日志文件
本文介绍了Oracle数据库的参数文件和告警日志文件。参数文件分为初始化参数文件(PFile)和服务器端参数文件(SPFile),在数据库启动时读取并分配资源。告警日志文件记录了数据库的重要活动、错误和警告信息,帮助诊断问题。文中还提供了相关视频讲解和示例代码。
156 1