git帮助阅读开源项目

为何要阅读开源项目

  • 源码是惟一的真实git

  • 加深对项目的理解vim

  • 学习本身没有的知识架构

  • 学习他人的写法,有助于本身代码质量的提升ide

开源项目难点

  • 不知道从哪儿开始函数

  • 文件太多,没法屡清楚结构学习

  • 代码太多,测试编译时耗费太多时间测试

  • 内容太多,难以全面理解idea

开源项目特色

开源项目最先只是一个idea, 这个idea是这个项目的根,随着项目的发展,特性会愈来愈多,架构可能会调整,但这个idea老是不变的,它是整个项目的精华.
而咱们若是想要理解一个开源项目,弄懂这个idea是必须的, 不少时候咱们就是为了深刻理解这个idea才产生阅读源码的动机。版本控制

随者这个idea的实现,这个项目算是诞生了。但随着愈来愈多特性的加入,愈来愈多代码的提交,这个idea愈来愈深的掩藏起来。因此咱们能够从早期版本入手.日志

最先完成idea的版本中这个idea是最清晰的,代码量是最少的,也是咱们理解这个项目的最佳时机.

使用git帮助理解开源项目

早期版本是切入开源项目的好时机,git是版本控制领域的佼佼者,使用git帮助理解开源项目

逆序查看日志
git log --reverse
找一个感兴趣的版本切入
git checkout <commit-id>
导航与对比
  • 切换当前提交的上一次提交

git checkout HEAD~
  • 切换当前提交的下一次提交

git log --reverse --pretty=%H master | grep -A 1 $(git rev-parse HEAD) | tail -n1 | xargs git checkout;
  • 比较上一个分支与当前分支

git diff HEAD~..HEAD
追踪文件的变动历史
git log --follow path/to/source_file

根据须要,能够专门阅读该文件相关的某个特定的commit,不少时候项目初版的代码会比最新版的代码简单不少,阅读旧版的代码可能会比较容易。若是是为了修复bug而读代码,这样的变动历史有时候能够提示咱们哪一个commit可能引入了bug。

查找字段(函数名,变量名)
git grep -w func -A100 -B100

假设有一个内部函数叫作func(), 没有文档,如何知道这个函数怎么用?除了阅读内部函数的实现和阅读实例,基本上没有其余方法。对于这种状况
能够批量找到func的用例,在vim里从上往下先扫一遍,找到尽量简单的用例,而后再返回到源文件中阅读这个用例的上下文.

git alias

有些经常使用的git操做,咱们能够经过设置git alias加快输入

git config --global alias.prev 'checkout HEAD~'
git config --global alias.next '! f() { git log --reverse --pretty=%H ${1:-master} | grep -A 1 $(git rev-parse HEAD) | tail -n1 | xargs git checkout; }; f'
git config --global alias.difp 'diff HEAD~..HEAD'

更多文章的目录在这里

相关文章
相关标签/搜索