git 查看文件修改记录
今天追了个几年前留下来的坑, 在 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 里看对应版本的修改, 直到尽头
建议继续学习:
- Git常用命令备忘 (阅读:53111)
- Git log diff config高级进阶 (阅读:23658)
- Git subtree 要不要使用 –squash 参数 (阅读:22207)
- 我的git笔记 (阅读:18717)
- Zend Studio集成Git使用 (阅读:7936)
- Git commit 注释格式 (阅读:5638)
- GIT和SVN之间的五个基本区别 (阅读:4849)
- 为何改用Git (阅读:3886)
- Git安装使用手记 (阅读:3841)
- 用git部署php站点 (阅读:3468)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:snoopy 来源: 笨狗又一窝
- 标签: git
- 发布时间:2015-11-02 22:26:19
- [66] Oracle MTS模式下 进程地址与会话信
- [66] Go Reflect 性能
- [65] 如何拿下简短的域名
- [59] android 开发入门
- [59] 图书馆的世界纪录
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则