如何理解git命令的结构?
git remote add origin repo-url
在上面的代码中,哪个是命令,哪个是参数?
答案 0 :(得分:5)
在不同的系统上可以使用不同的命令行解释器,因此对于某些细节,操作系统和/或您选择的外壳很重要。您提到了Linux(通过linux标签),因此我们可能会假设您正在使用bash,dash,fish,zsh,甚至tcsh或类似的东西。这些外壳都略有不同,但是它们有很多共同点:
他们将第一个空格分隔的单词作为命令。其余所有单词都是自变量。
它们执行shell称为glob expansion的操作,因此该程序无需获取例如*.py
的程序,而只是将所有.py
文件作为单独的参数。
它们执行可变扩展,例如将$HOME
替换为您的主目录。
(这里不是讨论所有这些详细信息的正确地方-查找您特定Shell的文档,然后阅读,和/或阅读一些Unix或Linux编程环境书。StackOverflow和其他StackExchange站点确实有很多特定的不过,有关特定Shell编程结构的答案。)
在任何情况下,请输入以下命令:
git remote add origin repo-url
shell的的职责是将五个单词分解为一个参数向量:git
,remote
,add
,origin
和repo-url
。第零个参数 1 是要运行的命令,因此外壳程序随后找到该命令(使用$PATH
)并将其运行,并将所有参数(包括命令名称本身)传递给命令
因此,此时,命令为git
,其他所有内容均为该命令的参数。但是,git
命令本身的作用就像一个微型的非交互式外壳程序:它解释其自变量,例如remote
,以确定其中哪个是命令。因此对于Git来说,remote
是一个命令,带有参数add
,origin
和repo-url
。 Git在命令前加上git-
,然后找到git-remote
命令(位于git --exec-path
要打印的目录中)并运行带有参数{{ 1}},add
和origin
(以及第零个参数url
)。
因此,在将git-remote
命令传递到git
命令之后,参数现在仅为git-remote
,add
和origin
(命令名称url
作为第零个参数可用于git-remote
。
请注意,git-remote
命令本身具有(并处理并因此带走了)某些命令选项。例如,运行:
git
使Git保存工作树设置git --work-tree=/tmp hello world
,然后尝试使用参数/tmp
运行命令git-hello
。您可以通过编写world
程序来编写自己的Git命令:git-hello
然后将运行git hello
程序。无论如何,此时git-hello
自变量已从自变量列表中消失。 (Git将其存储在环境变量--work-tree
中。环境变量在$GIT_WORK_TREE
个系统调用中传递; exec
是shell运行exec
的方式以及Git运行其子程序的方式-命令。)
1 在C语言编程中使用的命名约定之后,该第零个参数通常称为git
。
答案 1 :(得分:1)
git cli book提供了有关git命令行界面的详细信息。
在您的代码中,git remote是命令,其后是参数。
git-remote-管理一组跟踪的存储库
管理要跟踪其分支的存储库(“远程”)集。
您可以通过
查找任何git命令的子命令git help <git_command>
答案 2 :(得分:-1)
如果您在理解git CLI时遇到困难,可以随时使用git GUI,它也可以正常工作。