你确定?用Git调试?

当有人说 "调试 "时,你会想到哪些工具?让我猜猜:

内存泄漏检测器(如 Valgrind);

剖析器(如 GNU gprof);

停止程序并提供 REPL 的函数(如 Python 的 breakpoint 和 Ruby 的 byebug);

我们称之为 "调试器 "的东西(如 GDB,或集成开发环境中嵌入的类似功能);

甚至是我们的老朋友 print 函数。

因此,在这篇文章中,我将试图说服你把 Git 加入你的调试工具箱。

在使用 Git 进行代码版本控制时,版本库是一个宝贵的信息来源。在很多人看来,Git 就像上传文件到 Google Drive 或在 Instagram 上发布照片一样,只是用来 git add、git commit 和最后 git push 的命令。然而,由于 Git 会保存从最古老的提交开始的整个提交历史,它也许是最了解代码的工具。每个文件的每个版本都存储在版本库中(本文中我将本地版本库称为 "版本库",而非 GitHub、GitLab、Bitbucket 等版本库),要在其中找到有用的信息,简直就是一项考古工作。

因此,我将在这里介绍一些有用的概念和工具,以便从中提取你所需要的一切!

Git 基础知识回顾

在继续之前,让我们先回顾一下 Git 的基础知识。

提交是版本库的 "版本"。它们是快照,而不是延迟,这意味着提交并不知道哪些内容发生了变化。相反,提交存储了每个文件的内容。当你运行 git show 时,显示的不是一个提交的内容,而是一个补丁,即与父文件相关的改动。不过,为了节省空间,这种存储方式很巧妙。