2016-08-22 1 views
1

Ich versuche, ein Projekt auf GitHub freizugeben und möchte die integrierte Option "Projekt auf GitHub freigeben" von IntelliJ IDEA verwenden. Wenn ich darauf klicke, werde ich aufgefordert, mich bei GitHub anzumelden, was ich erfolgreich mache, und dann die Dateien auszuwählen, die ich festschreiben möchte, damit sie in das Repository übertragen werden können.Projekt auf GitHub mit alternierendem Konto teilen

Das Problem ist, dass, während dies in der Tat ein leeres Repository auf GitHub schafft, ist es nicht die ursprüngliche verpflichten sich schieben und wirft stattdessen einen Fehler bei mir:

Successfully created project 'project' on GitHub, but initial push failed: unable to access 'https://github.com/alt/project.git/': The requested URL returned error: 403

ich kenne den Grund Das liegt daran, dass ich git eingerichtet habe, um mein Hauptkonto zu verwenden, und ich versuche, zu dem Repository zu gelangen, das sich in meinem Alt-Konto befindet. Ich habe aus meinen eigenen Gründen einen Alt-Account eingerichtet. Nachdem dies fehlgeschlagen war, versuchte ich es mit git bash zu machen; Ich habe ein neues SSH-Schlüsselpaar für das alt-Konto erstellt und es den SSH-Schlüsseln im alt-Konto auf GitHub hinzugefügt. Ich habe auch eine Config in meinem ~/.ssh/ Ordner:

#Default GitHub 
Host github.com 
    HostName github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa 

#Alt GitHub 
Host github-alt 
    HostName github.com 
    User git 
    IdentityFile ~/.ssh/id_rsa_alt 

und setzen auch die user.email und user.name an die E-Mail und den Namen meines alt Konto. Nachdem all dies zu tun, habe ich versucht, dann eine neue Remote hinzuzufügen und schieben Sie es git bash mit:

git remote add origin [email protected]:alt/project.git 
git push -u origin master 

, die tatsächlich das Commit in das Repository ... als meine Haupt Konto, nicht nicht drücken mein alt Konto.

Was mache ich hier falsch? Ich möchte ein Projekt auf GitHub auf meiner alt Konto teilen, und Push-Commits dazu mit der gleichen alt Konto.

+0

Haben Sie 'user.name' und' user.email' * festgelegt * bevor * Sie Ihren Code lokal festgeschrieben haben? (Der Benutzername und die E-Mail-Informationen sind an einen Commit gebunden und werden nicht geändert, wenn Sie diese Commits drücken.) –

+1

Ja, das wäre es. Nachdem ich diese Antwort geschrieben hatte, erkannte ich, dass dies das Problem war, also habe ich es aussortiert und es funktioniert jetzt. Diese Frage scheint jetzt ziemlich nutzlos, tut mir leid. – driima

+2

Kein Problem. In diesem Fall können Sie [Ihre Frage löschen] (// meta.stackexchange.com/a/5222/269535), wenn Sie denken, dass sie für andere nicht nützlich ist. –

Antwort

2

Der Befehl git remote add origin [email protected]:alt/project.git && git push -u origin master verschiebt den Code in das Repository, das mit verbunden ist. Alt Konto.

Aber dies ändert nicht Autor von bestehenden Commits. Die bisherigen Commits haben Haupt Benutzername zugeordnet. Die Änderung des Benutzernamens im gesamten Commit-Verlauf erfordert das erneute Schreiben des Git-Verlaufs. Stellen Sie sicher, dass Sie ein Backup des Repositorys haben, bevor Sie dies tun.

Beispielscript:

#!/bin/sh 
git filter-branch --env-filter ' 

OLD_EMAIL="[email protected]" 
NEW_NAME="alt" 
NEW_EMAIL="[email protected]" 

if [ "$GIT_COMMITTER_EMAIL" = "$OLD_EMAIL" ] 
then 
    export GIT_COMMITTER_NAME="$NEW_NAME" 
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL" 
fi 
if [ "$GIT_AUTHOR_EMAIL" = "$OLD_EMAIL" ] 
then 
    export GIT_AUTHOR_NAME="$NEW_NAME" 
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL" 
fi 
' --tag-name-filter cat -- --branches --tags 

Sie eine Kraft Push nach git Geschichte zu überprüfen. git push --force --tags origin 'refs/heads/*'

Verwandte Themen