620 Stimmen

Ist es möglich, verschiedene Git-Konfigurationen für verschiedene Projekte zu verwenden?

.gitconfig wird normalerweise in der user.home Verzeichnis.

Ich verwende eine andere Identität, um an Projekten für Unternehmen A zu arbeiten, und eine andere für Unternehmen B (vor allem den Namen/die E-Mail-Adresse). Wie kann ich zwei verschiedene Git-Konfigurationen haben, damit meine Check-Ins nicht mit dem Namen/der E-Mail-Adresse verknüpft werden?

2voto

Karishma Sukhwani Punkte 176

Mehrere SSH-Schlüssel mit Github-Konfiguration hinzufügen

Nach dem 13. August 2021 unterstützt Git die HTTPs-Authentifizierungsmethode nicht mehr, daher glaube ich, dass diese Antwort aktualisiert werden muss.

Folgen Sie den nachstehenden Schritten:

  • alle SSH-Schlüssel (öffentlich und privat) für Git im Verzeichnis entfernen ~/.ssh/ .
  • neue SSH-Schlüssel erstellen:

    ssh-keygen -t rsa -b 4096 -C "account1@gmail.com" ssh-keygen -t rsa -b 4096 -C "account2@gmail.com"

Wenn Sie nach Dateinamen gefragt werden, geben Sie Standard ~/.ssh/id_rsa für Konto1 und ~/.ssh/id_rsa_acc2 für Konto2.

  • Starten Sie ssh-agent und fügen Sie private Schlüssel für Konto1 und Konto2 hinzu:

    eval ssh-agent ssh-add -k ~/.ssh/id_rsa ssh-add -k ~/.ssh/id_rsa_acc2

Bestätigungstasten werden mit dem Befehl ssh-add -l

  • Kopieren Sie die öffentlichen Schlüssel für Konto1 und Konto2 und fügen Sie sie Ihrem Github-Konto hinzu. command: cat ~/.ssh/id_rsa.pub | pbcopy (um zu prüfen, ob es kopiert wurde: pbpaste

  • den Benutzernamen und die Benutzer-E-Mail von Konto1 als globale GitHub-Konfiguration festlegen:

    git config --global user.name "acc1_username" git config --global user.email "account1@gmail.com"

  • erstellen. ~/.ssh/config Datei mit folgender Konfiguration:

    account1 github

    Host github.com HostName github.com User git AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa

    account2 github

    Host github.com-acc2 HostName github.com User git AddKeysToAgent yes IdentityFile ~/.ssh/id_rsa_acc2

  • Um das GitHub-Konto2 für ein Projekt einzurichten, legen Sie den Benutzernamen und die E-Mail-Adresse auf Projektebene im Root-Verzeichnis des Projekts fest:

    git config user.name "acc2_username" git config user.email "account2@gmail.com"

  • Klonen Sie nun oder fügen Sie den Ursprung über den SSH-Link des GitHub-Repos hinzu:

    for account1 repo

    git remote set-url origin git@github.com:acc1_username/reponame.git

    for account2 repo

    git clone git@github.com-acc2:acc2_username/reponame.git

Bei Zweifeln können Sie gerne Kommentare hinzufügen.

1voto

gtxtreme Punkte 1219

Ich habe ein wirklich nützliches Shell-Skript gefunden, das den ganzen Prozess der ssh-Schlüsselgenerierung und das wiederholte Eintippen langer Befehle umgeht

Hinweis: Dies gilt nur für ZSh Benutzer

https://github.com/tw-yshuang/Git_SSH-Account_Switch

0voto

netizen24601 Punkte 9

Ich sitze im selben Boot. Ich habe ein kleines Bash-Skript geschrieben, um sie zu verwalten. https://github.com/thejeffreystone/setgit

#!/bin/bash

# setgit
#
# Script to manage multiple global gitconfigs
# 
# To save your current .gitconfig to .gitconfig-this just run:
# setgit -s this
#
# To load .gitconfig-this to .gitconfig it run:
# setgit -f this
# 
# 
# 
# Author: Jeffrey Stone <thejeffreystone@gmail.com>

usage(){
  echo "$(basename $0) [-h] [-f name]" 
  echo ""
  echo "where:"
  echo " -h  Show Help Text"
  echo " -f  Load the .gitconfig file based on option passed"
  echo ""
  exit 1  
}

if [ $# -lt 1 ]
then
  usage
  exit
fi

while getopts ':hf:' option; do
  case "$option" in
      h) usage
         exit
         ;;
      f) echo "Loading .gitconfig from .gitconfig-$OPTARG"
         cat ~/.gitconfig-$OPTARG > ~/.gitconfig
         ;;
      *) printf "illegal option: '%s'\n" "$OPTARG" >&2
         echo "$usage" >&2
         exit 1
         ;;
    esac
done

0voto

Erich Meissner Punkte 155

Ich hatte einen Fehler, als ich versuchte git stash meine lokalen Änderungen. Die Fehlermeldung von Git lautete: "Bitte sagen Sie mir, wer Sie sind", und dann wurde ich aufgefordert, "Run git config --global user.email "you@example.com y git config --global user.name "Your name" um die Standardidentität Ihres Kontos festzulegen". Sie müssen jedoch --global weglassen um die Identität nur in Ihrem aktuellen Repository zu setzen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X