我想在直接使用命令行参数调用Git命令时覆盖某些Git配置选项(例如我的情况下的
http.proxy
)。这是否可行?是的,你可以使用-c
来通过它,例如:
git -c http.proxy=someproxy clone https://github.com/user/repo.git
请注意,有一个新功能可以通过命令 git -c
覆盖配置项:
在 git 2.1.2(2014年9月30日)之前,无法将配置设置为空字符串(git -c http.proxy=
或任何其他 foo.bar=
),直到 git 2.1.2 以及 commit a789ca7 的发布,该问题得到了解决。发布者是 Junio C Hamano(gitster
)
git -c
" to recognize an empty string在配置文件中,你可以这样写:
[foo]
bar
为了打开布尔型标记“foo.bar”,你可以执行以下操作:[foo]
bar=
将“
foo.bar
”设置为空字符串。
然而,Git 的“-c
”参数对两者都进行处理:
git -c foo.bar
和
git -c foo.bar=
作为布尔标志,无法将变量设置为空字符串。
此补丁使后者能够实现该功能。
Denton-L
) 执行。gitster
-- 合并于 提交 71221f2,2019 年 7 月 9 日)
config/alias.txt
: 接受非命令首词的文档别名可以看到,允许使用以非命令首词开头的别名,例如
loud-rebase = -c commit.verbose=true rebase
。
然而,这对用户来说并不是显而易见的,因为别名通常以命令开头。记录别名可以以非命令首词开头的事实,以便用户发现这是一个功能。
文档现在包括:
请注意,别名的第一个单词不一定是命令。它可以是一个命令行选项,将传递到git调用中。特别是在与-c一起使用以传递一次性配置或-p以强制分页时非常有用。例如,可以定义loud-rebase = -c commit.verbose=true rebase,使运行git loud-rebase等同于git -c commit.verbose=true rebase。另外,ps = -p status是一个有用的别名,因为git ps会对git status的输出进行分页,而原始命令则不会。vonc@vonvb:~/gits/src/git$ git config alias.loud-commit "-c commit.verbose=true commit"
vonc@vonvb:~/gits/src/git$ git loud-commit -a
那给了我:
diff(红色部分)不会出现在使用简单的git commit -a
命令的提交消息编辑器中。!git
开头即可调用shell命令git
。它可以直接以-c
等git
命令选项开头。是的,这是可能的。 首先,Git是如何存储配置的? 我有一个本地工作仓库。
cat ./projects/autoopt.ru/.git/config
所以git将设置存储在文件中。您可以直接编辑此文件,但是git提供了CLI简化编辑配置参数的过程。
那么命令是什么?可能是git config set= 啊...我需要参数名url?set url=不起作用吗?
那么如何找出git config命令的格式?
现在,我需要找出如何写入参数名,以便通过给定的配置文件内容更改远程存储库的URL。
[remote "origin"]
url=...
类别远程,实例原始,类成员网址具有值。
所以答案是
git config remote.origin.url <value>
-c <name>=<value>
将配置参数传递给命令。给定的值将覆盖配置文件中的值。<name>
的格式应与 git config 中列出的格式相同(子键以点分隔)。 - yasousergit -c core.editor=gedit commit
,我会发现这很有用。 - MattSturgeon-c
参数,例如git -c http.proxy=localhost:3128 -c http.useragent=test
。 - bereal