2010-08-28 49 views
7

我与Git有点结合。我试图执行git commit但我需要能够~/.gitconfig1~/.gitconfig2之间等维护到是否有一个命令行开关 - 或反正有Git使用不同的gitconfig文件,然后在/etc/gitconfig~/.gitconfig.git/config发现的呢?如何指定自定义全局gitconfig路径?

+0

你真的需要两个不同的配置,而在一个回购?你可以使用每个回购的.git/config来获得你想要的?如果你只有两种常见的设置来传播几十个回购券,我想这不是很优雅吗? – Cascabel 2010-08-29 04:24:41

+0

@Jefromi是的,我愿意。这是一个独特的情况,我遇到了需要两个配置的地方 – 2010-08-29 15:03:32

+2

另一个明显的选择是将全局别名'git commit-v2'(或更短的)替换为'!export GIT_AUTHOR_NAME =“Second name”; git commit'。 – Cascabel 2010-08-29 15:43:08

回答

12

我找到了一种方法来执行此操作 - 虽然不够高雅,但确实奏效 - 迄今为止,似乎是实现这一目标的唯一方法。

Git使用HOME路径来确定.gitconfig是哪里。我是能够执行这样的事情:

/home/marco/.silly/.gitconfig 
/home/marco/.stupid/.gitconfig 
/home/marco/.gitconfig 

和执行git的承诺(这是需要.gitconfig唯一的命令),当我推翻了回家路。

HOME=/home/marco/.silly/ git commit -m "silly configuration" 

然后,您可以使用别名来做到这一点很容易

alias sillygit="HOME=/home/marco/.silly/ git" 
sillygit commit -m "silly stuff" 
+0

尼斯破解。我似乎无法找到任何真正的方法来做到这一点 - 有一个GIT_CONFIG环境变量,但它只影响'git config'本身,就像它的'-f, - file'选项一样。 – Cascabel 2010-08-29 15:38:28

0

man git-config告诉我使用-f标志来传递配置文件。然而,它似乎不适用于git config以外的其他命令,所以我认为您必须在提交之前调用它,轻松完成别名。

+0

这只是告诉特定的git-config调用什么文件来读取或写入 - 它不会影响任何其他命令,据我所知。 – Cascabel 2010-08-29 04:23:01

+0

正确 - 这不起作用。 – 2010-08-29 15:03:49

-3

可以使用--git-DIR

git --git-dir /home/marco/silly/.git commit ... 
+0

--git-dir设置正在编辑的存储库,这是提问者特别试图避免的。 – 2012-10-28 12:40:32

0

马里奥Ceppi的alias approach可以在一个稍微更优雅的方式来使用使用-c config=value参数到git

$ alias sillygit="git -c user.name=Silly -c [email protected]" 
$ sillygit commit 

这当然假设你不介意在你的.bashrc或类似的地方保留不同的配置密钥,而不是你的.gitconfig,并且它有破解shell完成的警告。

相关问题