2011-01-08 9 views
6

Ich arbeite mit mehreren Git-Remote-Repositories und beide benötigen unterschiedliche Git-Anmeldeinformationen (Name und Mail).Wie man mehrere Benutzerkonfigurationen in Git verwaltet?

Gibt es eine Lösung wie ein Skript oder Best Practices, wie man sie verwaltet?

Ich weiß über "Config - Local", aber ich möchte diese Variablen nicht jedes Mal manuell festlegen.

+0

Siehe auch [Kann ich mehrere Benutzer in .gitconfig angeben?] (Http: // stackoverflow.com/questions/4220416/can-i-specify-multiple-users-für-mich-in-gitconfig) –

Antwort

10

Es sieht aus wie nur sagen git config user.name (oder user.email) in einem bestimmten Repository, ohne --global oder --system Angabe würde den Trick tun. Standardmäßig wird die Konfiguration im aktuellen Repository festgelegt, und Sie müssen ihr explizite Optionen zuweisen, damit sie stattdessen in die Konfiguration auf Benutzerebene oder systemweit schreiben können.

Ich weiß nicht, wie man dies tun würde, wenn Sie gerade Repositorys neu klonen, die eine andere Konfiguration benötigen. Vielleicht könnten Sie ein kleines Skript schreiben, das git clone umschließt, um ein Repository zu klonen, und dann die entsprechende Konfiguration basierend auf welchen Informationen einstellen? Wenn Sie das Skript unter /usr/lib/git-core mit dem Namen git-nclone löschen, können Sie es als git nclone ausführen.

Bearbeiten: Da Sie nicht jedes Mal manuell festlegen möchten, wie wäre es mit einem Klon-Wrapper, der sich die verschiedenen tatsächlich verwendeten Sätze merkt und die passende für das zu klonende Repository auswählt. Es könnte sogar intelligente Standardwerte haben, abhängig davon, woher der Klon kommt.

+1

Änderungen an der lokalen Konfiguration erscheinen in der Datei .git/config – Abizern

+3

Wenn Sie eine große Anzahl von verschiedenen Konfigurationen haben, ich Ich schlage vor, die globale Konfiguration (~/.gitconfig) ohne Namen/E-Mail-Einstellungen zu belassen, sodass Sie eine Warnung erhalten, wenn Sie versuchen, in einem Repository zu committen, das nicht konfiguriert wurde. Wenn Sie auf der anderen Seite zwei primäre Konfigurationen haben, setzen Sie die "sichere" global und überschreiben Sie sie dann in einzelnen Repos. – Cascabel

+1

Git sollte die Gesamtheit von '$ PATH 'auf ausführbare Dateien mit dem Namen' git-foo' überprüfen, also sollte man es in '~/bin /' fallen lassen und sicherstellen, dass es in Ihrem $ PFAD ist. – fow

0

habe ich ein paar Aliase, die wie folgt aussieht:

Die Idee ist, kann ich meine Anmeldeinformationen (E-Mail, Benutzername) in der Alias-Definition speichern. Wenn ich klonen oder initialisieren möchte, muss ich kein git config jedes Mal durchführen.

wenn Initialisierung:

initgithub = !git init && git config user.email [[email protected]] && git config user.name [yourgithubusername] 

initbitbucket = !git init && git config user.email [[email protected]] && git config user.name [yourbitbucketusername] 

beim Klonieren:

clonegithub = "!f() { git clone $1 $2; cd $2; git config user.email [[email protected]]; git config user.name [yourgithubusername]; }; f" 

clonebitbucket = "!f() { git clone $1 $2; cd $2; git config user.email [[email protected]]; git config user.name [yourbitbucketusername]; }; f" 

ussage:

wenn Initialisierung:

git initgithub

01 initbitbucket

git

beim Klonieren:

git clonegithub https://github.com/pathtoproject.git/c/temp/somefolder/project

git clonebitbucket https://github.com/pathtoproject.git/c/temp/somefolder/Projekt

Beim Klonen können Sie grundsätzlich eine Funktion erstellen, die sowohl den normalen Klon-Vorgang als auch ausführt die Konfigurationsvorgänge. Für den Moment müssen Sie den Pfad zu dem Ordner angeben, in den Sie klonen, um Ihre Anmeldeinformationen richtig zu konfigurieren.

Verwandte Themen