2010-08-28 3 views
7

Je suis un peu d'une liaison avec Git. Je suis en train d'exécuter git commit mais je dois pouvoir swtich entre ~/.gitconfig1 et ~/.gitconfig2 est-il un commutateur de ligne de commande - ou en tout cas d'avoir Git utiliser un fichier gitconfig différent puis ceux trouvés à /etc/gitconfig, ~/.gitconfig et .git/config?Comment puis-je spécifier le chemin gitconfig global personnalisé?

+0

Avez-vous besoin en fait deux configs différentes alors que dans une pension? Pouvez-vous juste utiliser le .git/config pour chaque repo pour obtenir ce que vous voulez? Je suppose que ce n'est pas très élégant si vous n'avez que deux paramètres communs à répartir sur des dizaines de repos? – Cascabel

+0

@Jefromi Oui, je le fais. C'est une situation unique que j'ai rencontrée où deux configs sont nécessaires –

+2

L'autre alternative évidente serait globalement l'alias 'git commit-v2' (ou quelque chose de plus court) à'! Export GIT_AUTHOR_NAME = "Second name"; git commit'. – Cascabel

Répondre

12

J'ai trouvé un moyen d'exécuter cette - ce n'était pas élégant, mais il a fait le travail - et semble jusqu'à présent être la seule façon d'obtenir ce travail. Git utilise le chemin HOME pour déterminer où se trouve .gitconfig. J'ai pu exécuter quelque chose comme ceci:

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

Et lors de l'exécution Git Commit (qui est la seule commande qui nécessite l'.gitconfig) Je l'emportaient sur le chemin de la maison.

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

Vous pouvez ensuite utiliser alias pour le faire facilement

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

Nice hack. Je n'arrive pas à trouver de véritable moyen de le faire - il y a une variable d'environnement GIT_CONFIG, mais elle affecte seulement 'git config' elle-même, de la même façon que son option' -f, - file'. – Cascabel

0

man git-config me dit d'utiliser le drapeau -f pour passer un fichier de configuration. Cependant, il ne semble pas fonctionner avec d'autres commandes que git config, donc je pense que vous devez l'appeler avant de vous engager, facile à faire avec un alias.

+0

Cela dit juste que l'invocation particulière de git-config quel fichier lire ou écrire - cela n'affectera pas d'autres commandes, autant que je sache. – Cascabel

+0

Correct - cela n'a pas fonctionné. –

-3

Vous pouvez utiliser --git-dir

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

--git-dir définit le référentiel en cours d'édition, que l'utilisateur tente précisément d'éviter. –

0

Mario Ceppi de alias approach peut être utilisé d'une manière un peu plus élégant en utilisant l'argument -c config=value à git:

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

Cela suppose bien sûr que cela ne vous dérange pas de conserver les différentes clés de configuration dans votre .bashrc ou similaire au lieu de dans votre .gitconfig, et il a la mise en garde de l'achèvement de la coque de rupture.

Questions connexes