如何通过命令行参数覆盖Git配置选项?

时间:2013-04-08 16:21:11

标签: git config

我想在使用命令行参数直接调用Git命令时覆盖某些Git配置选项(在我的情况下为http.proxy)。这可能吗?

3 个答案:

答案 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

config:teach" 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 459842ecommit 01991ceDenton 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 loud commit

差异(红色部分)将显示在带有简单git commit -a的提交消息编辑器中。

别名不需要以!git开头来调用shell命令git
它可以直接从git之类的-c命令选项开始。