技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 发现 --> git 查看文件修改记录

git 查看文件修改记录

浏览:2163次  出处信息

   今天追了个几年前留下来的坑, 在 git 里追溯修改过程坑死个爹, 具体方法估计没多久又会忘, 还是记下来以后有的参考

   大部分教程都会告诉大家使用 git log 来查看对应文件的修改记录, 就像这样

git log ./foo/bar.py

   但是这样默认是只显示提交信息摘要, 你也不知道具体哪里改了, 所以需要加上 -p 参数来显示具体修改内容. 如果这个文件改动频繁, 那么可能只想看最近几次的修改, 再加上一个 -[Num] 的参数来显示最近几次. 要想指定从某个版本往前, 直接指定版本号

git log -p ./foo/bar.py
git log -p -2 ./foo/bar.py
git log -p -2 74f6c40c ./foo/bar.py

   但是如果是追一个不知道什么时候埋下的坑, 可能更需要知道某一行到底是啥时候改的, 这时候应该用 git blame 来看每一行的最后提交是哪一个, 像这样

git blame ./foo/bar.py

   执行后进入像 less 一样的操作环境, 类 VIM 的翻页操作, 也可以用 / 或 ? 来查找, 不过这么看还是有点乱, 整个文件都标出来了, 如果我们只是想知道确定的某几行的历史呢? 祭出 -L n,m 参数

git blame -L 5,10 ./foo/bar.py
git blame -L 5,+5 ./foo/bar.py

   这样可以定位到某一行最后一次修改是哪个提交, 如果还要想继续往前找? 那么找到上一次修改的提交, 看在上次提交里的行数, 以上一次修改的提交号, 加上上一次修改对应的行数去继续往前

> git blame -L 8,+1 ./foo/bar.py
74f6c40c (Wen YE    2015-06-17 12:17:55 +0800    8) import StringIO
 
> git blame 74f6c40c ./foo/bar.py
74f6c40c (Wen YE    2015-06-17 12:17:55 +0800    1) # coding: utf8
74f6c40c (Wen YE    2015-06-17 12:17:55 +0800    2)
74f6c40c (Wen YE    2015-06-17 12:17:55 +0800    3) from bson import ObjectId
8b569399 (Wen YE    2015-06-17 12:17:32 +0800    4) import collections
be417d12 (Wen YE    2012-09-25 15:03:00 +0800    5) from datetime import datetime, timedelta
299e78b7 (Wen YE    2013-08-26 20:11:59 +0800    6) import json
74f6c40c (Wen YE    2015-06-17 12:17:55 +0800    7) import logging
8b569399 (Wen YE    2015-06-17 12:17:32 +0800    8) import os
74f6c40c (Wen YE    2015-06-17 12:17:55 +0800    9) import StringIO
 
# 到头了, 那就是这个提交引入的, 看看改了什么
> git log -p -1 74f6c40c ./foo/bar.py

   当然, 期间配合 Source Tree 之类的图形化工具来对比提交的 diff 比用 git log 这样的命令行查看更方便, git blame 也只是看某行的最后修改, 并不能很直观的看出来那一次提交到底修改了什么, 而且没有代码高亮和对比

   我用的 git blame 定位到上一次提交, 在 Source Tree 里去看那个提交的具体修改内容, 如果还要往前追溯, 按 Source Tree 里看到的上一次提交里的行号, 带版本号继续 git blame, 再到 Source Tree 里看对应版本的修改, 直到尽头

建议继续学习:

  1. Git常用命令备忘    (阅读:53111)
  2. Git log diff config高级进阶    (阅读:23658)
  3. Git subtree 要不要使用 –squash 参数    (阅读:22207)
  4. 我的git笔记    (阅读:18717)
  5. Zend Studio集成Git使用    (阅读:7936)
  6. Git commit 注释格式    (阅读:5638)
  7. GIT和SVN之间的五个基本区别    (阅读:4849)
  8. 为何改用Git    (阅读:3886)
  9. Git安装使用手记    (阅读:3841)
  10. 用git部署php站点    (阅读:3468)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1