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

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

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

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

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

  1. git log --pretty=oneline 文件名

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

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

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

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

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

  1. git show 34b7ac981a39193ca78e0d4673ce66515c23988d frameworks/base/packages/SystemUI/AndroidManifest.xml

这样指定版本号,指定文件的就可以直接查看该文件的修改详情,不要看该版本号其他文件的修改。如下所示:

  1. oyp@buildServer3:~/E580$ git show 34b7ac981a39193ca78e0d4673ce66515c23988d frameworks/base/packages/SystemUI/AndroidManifest.xml
  2. commit 34b7ac981a39193ca78e0d4673ce66515c23988d
  3. Author: oyp <oyp@runbo.net>
  4. Date: Mon Nov 30 19:47:48 2015 +0800
  5.  
  6. [add a new feature to show the battery voltage value and level]
  7. 1.Support show the level of battery voltage (0-5 levels).
  8. 2.Support show the battery voltage value (accurate to two decimal places).
  9.  
  10. Appllicable Project: E580
  11. Appllicable model: All Except IKE
  12.  
  13. new file: frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_0.png
  14. new file: frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_1.png
  15. new file: frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_2.png
  16. new file: frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_3.png
  17. new file: frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_4.png
  18. new file: frameworks/base/packages/SystemUI/res/drawable-hdpi/battery_voltage_5.png
  19. new file: frameworks/base/packages/SystemUI/src/com/android/systemui/MyBatteryService.java
  20. new file: frameworks/base/packages/SystemUI/src/com/android/systemui/MyBootCompletedReceiver.java
  21.  
  22. modified: frameworks/base/packages/SystemUI/AndroidManifest.xml
  23. modified: frameworks/base/packages/SystemUI/res/layout/system_icons.xml
  24. modified: frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardStatusBarView.java
  25. modified: frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
  26. modified: frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarHeaderView.java
  27.  
  28. diff --git a/frameworks/base/packages/SystemUI/AndroidManifest.xml b/frameworks/base/packages/SystemUI/AndroidManifest.xml
  29. old mode 100644
  30. new mode 100755
  31. index dfdc14c..5fb3545
  32. --- a/frameworks/base/packages/SystemUI/AndroidManifest.xml
  33. +++ b/frameworks/base/packages/SystemUI/AndroidManifest.xml
  34. @@ -126,7 +126,11 @@
  35.  
  36. <!-- M: Add for data sim switch -->
  37. <uses-permission android:name="android.permission.WRITE_APN_SETTINGS"/>
  38. -
  39. +
  40. + <!-- added by ouyang start 2015-11-30 -->
  41. + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
  42. + <!-- added by ouyang end 2015-11-30 -->
  43. +
  44. <application
  45. android:name=".SystemUIApplication"
  46. android:persistent="true"
  47. @@ -407,5 +411,14 @@
  48. <action android:name="android.intent.action.LOCALE_CHANGED" />
  49. </intent-filter>
  50. </receiver>
  51. +
  52. + <!-- added by ouyang start 2015-11-30 -->
  53. + <receiver android:name=".MyBootCompletedReceiver" >
  54. + <intent-filter>
  55. + <action android:name="android.intent.action.BOOT_COMPLETED"/>
  56. + </intent-filter>
  57. + </receiver>
  58. + <service android:name=".MyBatteryService"/>
  59. + <!-- added by ouyang end 2015-11-30 -->
  60. </application>
  61. </manifest>



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

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

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

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

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

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学习(一):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学习(二):git config命令

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

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

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

随机推荐

  1. 使用淘宝 NPM 镜像

    http://www.runoob.com/nodejs/nodejs-npm.html ************************************** 大家都知道国内直接使用 npm ...

  2. 广告过滤神器(ADMuncher)4.93

    Ad Muncher 介绍:        浏览网页时,冷不防地被网站播放的MIDI音乐声音吓一跳,或是因为弹出的广告窗口碍事,而影响你上网络的心情.Ad Muncher支持Netscape.Inte ...

  3. winform 打印条码

    一个winform打印功能的示例 操作步骤:1.新建winform项目及创建窗体2.拖取 打印 相关控件 PageSetupDialog . PrintDialog . PrintDocument . ...

  4. CI 点击图片刷新验证码

    <img src="<?php echo site_url('home/login/code'); ?>" onclick= this.src="< ...

  5. CI 框架购物车问题

    因为CI 是外国的框架.购物逻辑和中国的不一样.所以需要改进ci 框架的 cart 类: (1)先把 cart类拷贝一份到application/libaries/下 (2)因为cart中购车中的商品 ...

  6. Python_uuid 学习总结

    1. 背景知识: UUID: 通用唯一标识符 ( Universally Unique Identifier ), 对于所有的UUID它可以保证在空间和时间上的唯一性. 它是通过MAC地址, 时间戳, ...

  7. dom4j api 详解

    1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. DOM4J ...

  8. windows 下安装securecrt 绿色版

  9. db2 设置表 not null

    db2将原表列notnull属性修改为null属性的方法   今天把自己遇到的一个小问题跟大家分享一下如何修改db2数据库表中列的属性--将列的非空属性改为允许空的属性,修改数据表的某一列属性其实很简 ...

  10. RequireJS禁止缓存

    通过配置文件可以禁止加载缓存的JS文件, 这个在开发过程中非常有用具体做法如下 require.config({ paths: { "E":"/Scripts/MyMod ...