Comment dire à git d’utiliser la bonne identité (nom et email) pour un projet donné?

J’utilise mon ordinateur portable personnel pour le travail et les projets personnels et j’aimerais utiliser mon adresse e-mail professionnelle pour mes commits au travail (gitolite) et mon adresse e-mail personnelle pour le rest (github).

J’ai lu des articles sur les solutions suivantes, qui sont toutes globales ou temporaires:

  • git config --global user.email "bob@example.com"
  • git config user.email "bob@example.com"
  • git commit --author "Bob "
  • définition d’une des variables d’environnement GIT_AUTHOR_EMAIL , GIT_COMMITTER_EMAIL ou EMAIL

Une solution consiste à exécuter manuellement une fonction shell qui définit mon environnement sur travail ou personnel , mais je suis certain que j’oublierai souvent de passer à la bonne identité, ce qui entraînera une erreur d’identité.

Existe-t-il un moyen de lier un certain référentiel, nom de projet, etc. à une identité (nom, email)? Que font les gens?

    git config user.email "bob@example.com"

    Faire cela dans un repo définira la configuration sur ce repo, et non globalement.

    On dirait que c’est à peu près ce que vous recherchez, sauf si je vous ai mal compris.

    Vous devez utiliser la commande set locale ci-dessous:

    ensemble local

     git config user.email mahmoud@company.ccc git config user.name 'Mahmoud Zalt' 

    obtenir local

     git config --get user.email git config --get user.name 

    Le fichier de configuration local se trouve dans le répertoire du projet: .git/config .

    ensemble global

     git config --global user.email mahmoud@zalt.me git config --global user.name 'Mahmoud Zalt' 

    get global

     git config --global --get user.email git config --global --get user.name 

    Le fichier de configuration global dans votre répertoire personnel: ~/.gitconfig .

    N’oubliez pas de citer les blancs, par exemple: «Prénom Nom»

    Editez le fichier de configuration avec le dossier “.git” pour conserver le nom d’utilisateur différent et le courrier électronique dépend du référentiel

    • Aller à votre repository
    • Montrer les fichiers cachés et aller dans le dossier “.git”
    • Trouvez le fichier “config”
    • Ajouter les lignes ci-dessous à EOF

    [utilisateur]

    name = Bob

    email = bob@example.com

    Cette commande ci-dessous vous montre quel nom d’utilisateur et email est défini pour ce référentiel.

    git config –get user.name

    git config –get user.email

    Exemple: pour le mien ce fichier de configuration dans D: \ workspace \ eclipse \ ipchat \ .git \ config

    Ici, ipchat est mon nom de repo

    Si vous utilisez git config user.email "foo@example.com" il sera lié au projet en cours dans git config user.email "foo@example.com" vous vous trouvez.

    C’est ce que je fais pour mes projets. Je définis l’identité appropriée lorsque je clone / init le repository. Il n’est pas infaillible (si vous oubliez et poussez avant de vous en rendre compte) mais il est à peu près aussi bon que possible sans la possibilité de dire git config --global user.email 'ILLEGAL_VALUE'

    En fait, vous pouvez faire 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 recevrez un message d’erreur.

    [EDIT] Sur un autre système, j’ai dû augmenter le nombre de x à 968 pour le faire échouer avec “identifiant personnel fatal: impossiblement long”. Même version de git. Étrange.

    Si vous n’utilisez pas le paramètre --global , il définira uniquement les variables pour le projet en cours.

    A partir de Git 2.13, vous pouvez utiliser un includeIf dans votre gitconfig pour inclure un fichier avec une configuration différente basée sur le chemin du référentiel dans lequel vous exécutez vos commandes git.

    Une fois que je le ferai fonctionner, je mettrai à jour avec un meilleur exemple.

    https://motowilliams.com/conditional-includes-for-git-config#disqus_thread

    Pour utiliser Git 2.13, vous devrez soit append un PPA (Ubuntu / Debian), soit télécharger les fichiers binarys et les installer (Windows / autre Linux).