我如何查看任何 git 命令中涉及的步骤

How can I see what are the steps involved in any git command

有什么方法或简洁的文档可以让我看到我们 运行 执行 git 命令时的所有步骤或阶段。

例如,当我们进行 git 拉取时。我相信

但这是我根据日志设计的。有什么方法可以让我真正看到什么是 运行 作为 git 命令的一部分,例如git stash -p。我试图搜索文档等,但没有找到任何东西。

请帮忙!

我相信你需要的是那些命令:

GIT_TRACE=1 git fetch origin master
GIT_TRACE=1 git pull origin master

git 有很多不同的调试标签。您可以在这里找到它们:

https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables#Debugging

唯一真正可靠的方法是参考source code. Be aware, though, that the source to Git evolves: git pull was once a shell script, but now it is a C program

但是,您可以 set the environment variable GIT_TRACE,它 Git 用来知道在运行各种 sub-commands 时打印消息。

只是提供另一个视角...

事实上,一个熟悉的命令 - git pull - 可以用另外两个熟悉的命令 - git fetchgit merge 来描述,至少在默认情况下是粗略的 - 这是一件事情异常。

大多数用户只学习了 git 命令的一小部分,称为 "porcelain" 命令。在 git - "plumbing commands" 中还有更多的命令可以实现更多的基本操作。许多 porcelain 命令从管道命令构建它们的功能。也许您知道这些管道命令,也许不知道;按照设计,您可以使用 git 作为您的源代码管理,甚至不知道它们的存在。

重点是,只有少数 end-user-facing 命令实际上只是其他 end-user-facing 命令的简写。您可以使用诸如检查源代码或跟踪命令 运行s 之类的技术(正如其他人所建议的那样)来查看 git 命令可能如何流动。但是您可能会看到大部分内容 "noise" - 根据不熟悉的事物构建的命令。

(使用跟踪日志记录的另一个限制是,您只能跟踪您 运行 命令的实例。例如,您已经看到 pull 类似于 fetch and merge,但这并没有向您指出在不同的配置下它更像是 fetch and rebase.)

所以我认为在大多数情况下,加深对 git 命令的理解最有用的方法是请参阅文档了解您想要了解的命令。

就是说,您提到了 stash,如果您真的想了解它的作用,这有点例外,因为文档似乎认为它是您不需要的所有实现细节。这有点可以理解;知道 stash 是提交的集合和以特定方式设置的 reflog 条目可能会满足好奇心,但对于大多数用户来说,这不是非常实用的知识,只会提供搬起石头砸自己脚的机会。