2010-08-28 14 views
7

Estoy en un aprieto con Git. Estoy intentando ejecutar git commit pero tengo que ser capaz de swtich entre ~/.gitconfig1 y ~/.gitconfig2 ¿Hay un interruptor de línea de comandos - o al menos tener Git utilizar un archivo gitconfig diferente a los encontrados en /etc/gitconfig, ~/.gitconfig y .git/config?¿Cómo puedo especificar la ruta global personalizada de gitconfig?

+0

¿De verdad necesita dos configuraciones diferentes mientras está en un repositorio? ¿Puedes usar el .git/config para cada repositorio para obtener lo que quieres? Supongo que no es muy elegante si solo tienes dos configuraciones comunes para distribuir en docenas de repositorios. – Cascabel

+0

@Jefromi Sí, lo hago. Es una situación única que he encontrado donde se necesitan dos configuraciones –

+2

La otra alternativa obvia sería alias globalmente 'git commit-v2' (o algo más corto) a'! Export GIT_AUTHOR_NAME = "Segundo nombre"; git commit'. – Cascabel

Respuesta

12

Encontré una manera de ejecutar esto, no era elegante, pero funcionó, y hasta ahora parece ser la única forma de hacer que esto funcione.

Git usa la ruta HOME para determinar dónde está .gitconfig. Yo era capaz de realizar algo como esto:

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

Y al ejecutar git commit (que es el único comando que requiere la .gitconfig) me hizo caso omiso de la vía de acceso inicial.

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

continuación, puede utilizar alias para hacer esto fácilmente

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

Buen truco. Parece que no puedo encontrar ninguna forma real de hacerlo: hay una variable de entorno GIT_CONFIG, pero solo afecta a 'git config', de la misma manera que a su opción' -f, - file'. – Cascabel

0

man git-config me dice que use la bandera -f para pasar un archivo de configuración. Sin embargo, parece que no funciona con otros comandos que no sean git config, por lo que creo que debe invocarlo antes de confirmarlo, lo que se puede hacer fácilmente con un alias.

+0

Eso solo le dice a esa invocación particular de git-config de qué archivo leer o escribir, no afectará a ningún otro comando, hasta donde yo sé. – Cascabel

+0

Correcto - esto no funcionó. –

-3

Puede utilizar --git-dir

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

--git-dir establece el repositorio que se está editando, que el autor de la pregunta intenta evitar específicamente. –

0

Mario de alias approach se puede utilizar de una manera un poco más elegante Ceppi utilizando el argumento -c config=value al git:

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

Esto, por supuesto, asume que no te importa guardar las diferentes claves de configuración en tu .bashrc o similar en lugar de en tu .gitconfig, y tiene la advertencia de terminar el shell shell.

Cuestiones relacionadas