50

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

4

4 回答 4

70

是的,您可以使用 传递它-c,例如:

git -c http.proxy=someproxy clone https://github.com/user/repo.git
于 2013-04-08T16:26:35.553 回答
10

git -c请注意,有一个关于覆盖(使用命令)配置的新功能:

您不能将配置设置为空字符串(git -c http.proxy=或任何其他字符串foo.bar=),直到git 2.1.2(2014 年 9 月 30 日),并提交 a789ca7 Junio C Hamano ( gitster)

配置:教“ git -c”识别空字符串

在配置文件中,您可以执行以下操作:

[foo]
bar

打开“ foo.bar”布尔标志,你可以这样做:

[foo]
bar=

将“ foo.bar”设置为空字符串。
但是,git 的 " -c" 参数同时处理:

git -c foo.bar

git -c foo.bar=

作为布尔标志,并且无法将变量设置为空字符串。
此补丁使后一种形式能够做到这一点。

于 2014-10-20T19:31:28.007 回答
2

如 Git 2.23(2019 年第三季度)中所述,但在此之前已经可用,您可以覆盖 Git 配置选项的另一个地方是... git aliases

请参阅Denton Liu ( ) 的提交 459842e提交 01991ce(2019 年 6 月 5 日(由Junio C Hamano 合并 -- --提交 71221f2中,2019 年 7 月 9 日)Denton-L
gitster

config/alias.txt:接受非命令第一个单词的文档别名

可以看到,允许以非命令第一个单词开头的别名,例如loud-rebase = -c commit.verbose=true rebase,。
但是,这对用户来说并不是很明显,因为别名实例通常以命令开头。

记录别名可以以非命令第一个单词开头的事实,以便用户能够发现这是一项功能。

该文档现在包括:

请注意,别名的第一个单词不一定是命令。它可以是一个命令行选项,将传递给git.

-c特别是,当与传递一次性配置或-p强制分页一起使用时,这很有用。

例如,loud-rebase = -c commit.verbose=true rebase可以定义为 runninggit 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 大声提交

diff (红色部分)不会出现在带有简单git commit -a.

别名不需要以!git调用 shell 命令开头git
它可以直接以git命令选项开头,例如-c.

于 2019-07-13T22:22:55.117 回答
0

是的,这是可能的。一开始git是如何存储他的配置的?我在本地有工作回购

cat ./projects/autoopt.ru/.git/config

在此处输入图像描述

所以 git 将设置存储在文件中。你可以直接编辑这个文件,但是 git 提供了 CLI 来简化编辑配置参数。

那么什么是指挥?可能是 git config set= 嗯...我需要参数名称 url?设置 url= 不起作用?

那么如何找出 git config 命令的格式呢?

  • 在我的情况下打开谷歌,yandex
  • “git 配置规范”
  • 官方 git 文档
  • git config name [value [value-pattern]] (这意味着您需要传递属性名称和空格分隔的值

现在,当我需要通过给定的配置文件内容更改远程 repos url 时,我需要找出如何编写参数的名称。

[remote "origin"]
   url=...

远程类、实例来源、类成员 url 与值。

所以答案是

git config remote.origin.url <value>
于 2021-12-17T14:52:57.843 回答