上面这行命令可以追踪source_file.c的变更历史,根据需要,可以专门阅读该文件相关的某个特定的commit,很多时候项目第一版的代码会比最新版的代码简单很多,阅读旧版的代码可能会比较容易。如果是为了修复bug而读代码,这样的变更历史有时候可以提示我们哪个commit可能引入了bug。
git blame path/to/source_file.c
blame是指责的意思,这个命令非常有意思,如果你在阅读代码的过程中觉得哪一行比较可疑,可以通过git blame查到该行代码的作者和commit id,然后单独阅读相关的补丁,如果这个补丁确实有bug,那你就可以诅咒作者吃方便面没有调料包。反过来,既然知道世界上有git blame这种东西,我们给开源项目提交补丁的时候就尤其要注意double check再double check,如果哪天吃方便面找不到调料包,记得回去检查代码。。。
使用git blame,可以在阅读代码的时候,以git commit为单位,而不是以源代码的行、函数或文件为单位,这样的好处是,如果一个commit同时改变了多个代码文件,可以同时注意到,不会漏掉逻辑上相关却不在同一个文件的代码。
===============================================================> (未完待续,会慢慢补充)