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

时间:2022-08-29 11:35:02

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

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

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

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

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

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

下面我介绍一个比较快捷的方法来查看某个指定文件的提交记录,使用的还是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]

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

如上所示,打印出来的就是针对文件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>

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

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

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

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

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

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

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

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

  1. Git学习系列之Git基本操作拉取项目(图文详解)

    前面博客 Git学习系列之Git基本操作推送项目(图文详解) 当然,如果多人协作,或者多个客户端进行修改,那么我们还要拉取(Pull ... )别人推送到在线仓库的内容下来. 大神们是不推荐使用 pu ...

  2. Git学习系列之Git基本操作推送项目(图文详解)

    前面博客 Git学习系列之Git基本操作提交项目(图文详解) 如果完成到一定程度,那么可以推送到远端在线仓库. 推送之前,请确保你已经设置了全局的 user.name 和 user.email, 如果 ...

  3. git学习------>写给 Git 初学者的7个建议

    PS:本文转载于(http://blog.jobbole.com/50603/),本文由 伯乐在线 - 吴鹏煜 翻译. 英文出处:(http://sixrevisions.com/web-develo ...

  4. Git学习系列之Git基本操作提交项目(图文详解)

    前面博客 Git学习系列之Git基本操作克隆项目(图文详解) 然后可以 cd 切换到 LispGentleIntro 目录, 新增或者修改某些文件.这里只是模拟一下操作, 实际情况可能是 使用 Ecl ...

  5. git学习&lpar;一&rpar;:git的版本库在哪儿

    查看版本 git --version # 查看git的版本 设置或者查看用户名和邮箱 git config --global user.name "tuhooo" // 如果后面没 ...

  6. Git学习系列之Git 的缺点有哪些?

    不多说,直接上干货 前面,谈及了 Git学习系列之Git 的优势有哪些? 缺点: (1)资料少(起码中文资料很少). (2)学习周期相对而言比较长. (3)不符合常规思维. (4)代码保密性差,一旦开 ...

  7. Linux常用基础命令整理:关机命令、查看目录下文件命令等

    Linux常用基础命令整理:关机命令.查看目录下文件命令等 整理了一些Linux常用基础命令,欢迎指正. 首先记住四个热键,学会这四个键,收益一辈子. Tab按键---命令补齐功能Ctrl+c按键-- ...

  8. git学习&lpar;二&rpar;:git config命令

    不同的git config操作不同的参数文件 git config --global // 配置用户目录下的.gitconfig那文件 git config --system // 配置系统级配置文件 ...

  9. Git学习之路(4)- 撤销操作、删除文件和恢复文件

    ▓▓▓▓▓▓ 大致介绍 经过前面的学习(小白学Git)已经建立了版本库,并上传了文件,这次来学习对这些文件进行基本的操作,即: ◆ 撤销操作 ◆ 删除文件 ◆ 恢复文件 我在此之前,已经将三个文件提交 ...

随机推荐

  1. android SharedPreferences 轻量级存储!

    首先在当前进程也就是当前的项目里面进行存储 SharedPreferences.Editor editor = mContext.getSharedPreferences("tvplay&q ...

  2. Orchard源码分析(5&period;3):EndRequest事件处理(DefaultOrchardHost&period;EndRequest方法)

    EndRequest事件处理的作用是处理完"处理引擎(ProcessingEngine)"中的任务(Task).           void IOrchardHost .EndR ...

  3. C语言:break和continue

    break: break用于循环则是终止循环,break如果用于switch,则是用于终止switch.break不能直接用于if,除非if是属于循环内部的一个子句 ;i<;i++) { &gt ...

  4. Sublime Text 3安装插件指南

    Sublime Text已经很用得很广泛,一般普通的功能已经够用,加入一些插件能些许加快开发. 安装 Package Control 有了插件控制器Package Control安装起来就很轻松了. ...

  5. C&num;和asp&period;net执行外部EXE程序

    这两天研究下.Net的执行外部EXE程序问题,就是在一个程序里通过按钮或其他操作运行起来另外一个程序,需要传入参数,如用户名.密码之类(实际上很类似单点登录,不过要简单的多的多):总结如下: 1.CS ...

  6. Hibernate笔记——表的的4种继承关系

    原文:http://justsee.iteye.com/blog/1070588 ===================================== 一.继承关系_整个继承树映射到一张表 对象 ...

  7. CocoStudio 创建简单UI资源并加入�到project

    打开CocoStudio UI编辑器新项目,设置画布480*320, 加入�一个标签和一个button控件 导出项目,生成所须要的资源文件, 拷贝到cocos2dprojectResources文件夹 ...

  8. java中volatile关键字的含义 &lpar;转载&rpar;

    在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉. Java语言是支持多线程的,为了解决线程并发的问题,在语 ...

  9. 【转】Android Studio中Git的配置及协同开发

    一. Android Stutio配置git   setting–>Version Control–>Git–>Path to Git executable中选择git.exe的位置 ...

  10. vue插件大全汇总

    Vue是一个构建数据驱动的 web 界面的渐进式框架.Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件特别整理了常用的vue插件,来了个大汇总,方便查找使用,便于工作 ...