Wie kann ich mit GitHub alle Zweige verschieben, wenn ich ein vorhandenes Repo hinzufüge?

125

Ich habe ein neues GitHub-Repo erstellt - ich möchte mein vorhandenes Repo dort ablegen.
Ich habe die Anweisungen befolgt:

cd existing_git_repo
git remote add origin [email protected]:acme-org/myprj.git
git push origin master

Dadurch wird nur der Hauptzweig an GitHub gesendet.
Wie schiebe ich alles (einschließlich aller Zweige) in meinem vorhandenen Repo auf mein neues GitHub-Repo?

Kipper
quelle
Hinweis: Sie haben auch git push --follow-tagsmit Git 1.8.3+ (Mai 2013). Siehe meine bearbeitete Antwort unten
VonC

Antworten:

237

Hinweis: git push --all pusht nicht Ihre Tags, sondern nur Ihre Zweige.

git push --all
git push --tags

würde wirklich alles schieben . Siehe auch " Git so einrichten, dass alle Zweige gezogen und geschoben werden ".
Vergessen Sie nicht die --dry-runMöglichkeit, einen Test durchzuführen, bevor Sie tatsächlich alles pushen.
Siehe auch GitHub-Hilfe " Arbeiten mit Fernbedienungen ", um Ihren Ursprung auf Ihr GitHub-Remote-Repo festzulegen.


Wie in " Wie wird" Git Push "dazu gebracht, Tags innerhalb eines Zweigs einzuschließen ? " Erwähnt, wurde Git 1.8.3+ (Mai 2013) eingeführt:

git push --follow-tags

Dadurch werden nicht alle Tags übertragen, sondern nur diejenigen, auf die über die von Ihnen übertragenen Zweige HEAD (s) zugegriffen werden kann.

Dies kann dazu beitragen, diesen Vorgang (Übertragen von Commits und Tags) aufrechtzuerhalten einem Befehl anstelle von zwei ausgeführt wird.

Git 2.4.1+ (Q2 2015) wird die Option einführen push.followTags.

VonC
quelle
Dies scheint nicht zu funktionieren, wenn Sie auf eine andere Fernbedienung (anstelle des Ursprungs) pushen möchten, sondern nur auf meinen aktuellen Zweig.
Aloys
@Aloys, die von Ihrer Git-Version und der aktuellen Standard-Push-Richtlinie abhängen würden: stackoverflow.com/questions/10002239/…
VonC
Wenn Sie auch entfernte Zweige pushen möchten, verwenden Sie--mirror
BFar
18

Die akzeptierte Antwort ist nicht ganz richtig, oder zumindest hat es bei mir nicht funktioniert. Ich musste auch das Remote-Repo angeben, z.

git push origin --all
Iain Hunter
quelle
Die Angabe der Fernbedienung ist nur erforderlich, wenn der Upstream nicht eingestellt ist.
Über den
Repository erforderlich, wenn mehrere Fernbedienungen hinzugefügt wurden, glaube ich ( $git remote -v)
Michael
2
Um die Verfolgung zwischen den lokalen und entfernten Zweigen einzustellen, kann -u hinzugefügt werden:git push -u origin --all
Drenai