我想在使用命令行参数直接调用Git命令时覆盖某些Git配置选项(在我的情况下为http.proxy
)。这可能吗?
答案 0 :(得分:41)
是的,您可以使用-c
传递它,例如:
git -c http.proxy=someproxy clone https://github.com/user/repo.git
答案 1 :(得分:9)
请注意,有一项新功能可以覆盖(使用命令git -c
)配置:
您无法将配置设置为空字符串(git -c http.proxy=
或任何其他foo.bar=
),直到git 2.1.2(2014年9月30日)和{{ 3}} commit a789ca7
git -c
"识别空字符串在配置文件中,您可以执行以下操作:
[foo]
bar
转动"
foo.bar
" boolean flag on,你可以这样做:
[foo]
bar=
设置"
foo.bar
"到空字符串。
但是,git"-c
"参数对待两者:
git -c foo.bar
和
git -c foo.bar=
作为布尔标志,并且无法将变量设置为空字符串 这个补丁使后一种形式能够做到这一点。
答案 2 :(得分:0)
如Git 2.23(Q3 2019)所述,但在此之前已经可用,可以覆盖Git配置选项的另一个地方是... git aliases !
请参见commit 459842e的commit 01991ce,Denton Liu (Denton-L
)(2019年6月5日)。
(由Junio C Hamano -- gitster
--在commit 71221f2中合并,2019年7月9日)
config/alias.txt
:文档别名接受非命令性第一个单词可以看到以非命令性第一个单词开头的别名,例如
loud-rebase = -c commit.verbose=true rebase
。
但是,对于别名实例通常以命令开头的用户来说,这并不是立即可见的。记录一个事实,即别名可以以非命令的第一个单词开头,以便用户能够发现这是一个功能。
The documentation现在包括:
请注意,别名的第一个单词不一定必须是 命令。 它可以是一个命令行选项,将传递给
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
那给了我
差异(红色部分)将不显示在带有简单git commit -a
的提交消息编辑器中。
别名不需要以!git
开头来调用shell命令git
。
它可以直接从git
之类的-c
命令选项开始。