J'utilise mon ordinateur portable personnel pour des projets professionnels et personnels et j'aimerais utiliser mon adresse e-mail professionnelle pour mes commits au travail (gitolite) et mon adresse e-mail personnelle pour le reste (github).
J'ai lu les solutions suivantes qui sont toutes globales ou temporaires:
git config --global user.email "[email protected]"
git config user.email "[email protected]"
git commit --author "Bob <[email protected]>"
- définition de l'une des variables d'environnement
GIT_AUTHOR_EMAIL
,GIT_COMMITTER_EMAIL
ouEMAIL
Une solution consiste à exécuter manuellement une fonction shell qui définit mon environnement de travail ou personnel , mais je suis presque sûr que j'oublierai souvent de passer à la bonne identité, ce qui entraînera une validation sous la mauvaise identité.
Existe-t-il un moyen de lier un certain référentiel, un nom de projet, etc. à une identité (nom, email)? Que font les gens?
git
github
gitolite
git-config
Martin Jambon
la source
la source
Réponses:
git config user.email "[email protected]"
Faire cela à l'intérieur d'un dépôt définira la configuration sur CE dépôt, et pas globalement.
On dirait que c'est à peu près ce que vous recherchez, sauf si je vous interprète mal.
la source
Vous devez utiliser la commande set locale ci-dessous:
ensemble local
local get
Le fichier de configuration local est dans le répertoire du projet:
.git/config
.ensemble global
global get
Le fichier de configuration globale dans votre répertoire personnel:
~/.gitconfig
.N'oubliez pas de citer des espaces, etc., par exemple: 'FirstName LastName'
la source
Modifiez le fichier de configuration dans le dossier ".git" pour conserver les différents nom d'utilisateur et e-mail dépend du référentiel
La commande ci-dessous vous montre le nom d'utilisateur et l'adresse e-mail définis pour ce référentiel.
Exemple: pour le mien, ce fichier de configuration dans D: \ workspace \ eclipse \ ipchat \ .git \ config
Ici ipchat est le nom de mon dépôt
la source
Si vous l'utilisez,
git config user.email "[email protected]"
il sera lié au projet actuel dans lequel vous vous trouvez.C'est ce que je fais pour mes projets. J'ai défini l'identité appropriée lorsque je cloné / initier le dépôt. Ce n'est pas infaillible (si vous oubliez et poussez avant de le comprendre, vous êtes arrosé) mais c'est à peu près aussi bon que vous pouvez obtenir sans la capacité de dire
git config --global user.email 'ILLEGAL_VALUE'
En fait, vous pouvez créer une valeur illégale. Définissez votre
git config --global user.name $(perl -e 'print "x"x968;')
Ensuite, si vous oubliez de définir vos valeurs non globales, vous obtiendrez un message d'erreur.
[EDIT] Sur un système différent, j'ai dû augmenter le nombre de x à 968 pour qu'il échoue avec "fatal: identifiant personnel incroyablement long". Même version de git. Étrange.
la source
Si vous n'utilisez pas le
--global
paramètre, il définira les variables pour le projet en cours uniquement.la source
Depuis Git 2.13, vous pouvez utiliser un
includeIf
dans votre gitconfig pour inclure un fichier avec une configuration différente en fonction du chemin du référentiel où vous exécutez vos commandes git.Depuis qu'un Git assez nouveau est livré avec Ubuntu 18.04, je l'utilise
~/.gitconfig
avec plaisir.https://motowilliams.com/conditional-includes-for-git-config#disqus_thread
Pour utiliser Git 2.13, vous devrez soit ajouter un PPA (Ubuntu plus ancien que 18.04 / Debian) ou télécharger les binaires et installer (Windows / autre Linux).
la source
git config core.sshCommand
plusieurs clés privées, offre une gestion complète et transparente des identités git.C'était exactement mon problème. J'ai écrit un script hook qui vous avertit si vous avez une télécommande github et que vous n'avez pas défini de nom d'utilisateur local.
Voici comment vous le configurez:
Créer un répertoire pour contenir le hook global
mkdir -p ~/.git-templates/hooks
Dites à git de tout copier dans
~/.git-templates
votre.git
répertoire par projet lorsque vous exécutez git init ou clonegit config --global init.templatedir '~/.git-templates'
Et maintenant, copiez les lignes suivantes
~/.git-templates/hooks/pre-commit
et rendez le fichier exécutable (n'oubliez pas ceci sinon git ne l'exécutera pas!)Si vous utilisez d'autres hôtes pour vos référentiels privés, vous devez les remplacer en
github.com
fonction de vos besoins.Maintenant, chaque fois que vous faites un
git init
ou,git clone
git copiera ce script dans le référentiel et l'exécutera avant que toute validation ne soit effectuée. Si vous n'avez pas défini de nom d'utilisateur local, il affichera un avertissement et ne vous laissera pas vous engager.la source
J'aime beaucoup la manière de Micah Henning dans son article (voir Configurer les identités Git ) sur ce sujet. Le fait qu'il applique et force l'identité à chaque référentiel créé / cloné est un bon moyen de ne pas oublier de le configurer à chaque fois.
Configuration de base de git
Annuler la configuration actuelle de l'utilisateur dans git:
Forcer la configuration de l'identité sur chaque nouveau référentiel local:
Créez un alias Git pour la
identity
commande, nous utiliserons plus tard:Création d'identités
Créez une identité avec GPG (utilisez
gpg
ou engpg2
fonction de ce que vous avez sur votre système). Répétez les étapes suivantes pour chaque identité que vous souhaitez utiliser.Copiez le bloc de clé publique et ajoutez-le à vos paramètres GitHub / GitProviderOfChoice en tant que clé GPG.
Ajoutez une identité à la configuration Git. Répétez également cette opération pour chaque identité que vous souhaitez ajouter:
Configurer l'identité d'un référentiel
Si un nouveau dépôt n'a aucune identité associée, une erreur apparaîtra lors de la validation, vous rappelant de la définir.
Spécifiez l'identité que vous souhaitez sur un nouveau référentiel:
Vous êtes maintenant prêt à vous engager avec l' identité gitlab .
la source