it-swarm.com.de

Wie erstelle ich ein neues GitHub-Repo aus einem Zweig in einem vorhandenen Repo?

Ich habe Master und New-Project Filialen. Und jetzt möchte ich mit seinem Master ein brandneues Repo erstellen, das auf der neuen Projektbranche basiert.

Hintergrund: Ich habe ein Repository, das drei unabhängige Anwendungen enthält. Es hat nicht so angefangen. Es gab ursprünglich nur eine App im Repo. Im Laufe der Zeit haben sich jedoch die geschäftlichen Anforderungen geändert. Aus einer App wurden zwei (eine ältere Version und eine Umschreibung.) Ein Webservice wurde hinzugefügt. Für die drei Projekte wurden separate Niederlassungen verwendet. Sie teilen jedoch keinen Code. Daher wäre es einfacher, sie in ihre eigenen Repos aufzuteilen.

129
Dogweather

Ich begann mit der Idee von @ user292677 und verfeinerte sie, um mein Problem zu lösen:

  1. Erstellen Sie das new-repo in github.
  2. cd zu Ihrer lokalen Kopie des alten Repos, aus dem Sie extrahieren möchten, das so eingerichtet ist, dass es den Zweig new-project verfolgt, der zum Master des new-repo wird.
  3. $ git Push https://github.com/accountname/new-repo.git +new-project:master 

Das neue Github-Repo ist fertig. Das Ergebnis ist;

  • ein neues Github-Repository mit dem Namen new-repo,
  • deren master dem new-project des alten Repos entspricht, mit
  • alle geschichte erhalten.

In der Tat habe ich festgestellt, dass ich mit dieser Methode das neue Repo mit einer handverlesenen Auswahl an Filialen erstellen konnte, die ich umbenannt habe:

$ git Push [email protected]:accountname/new_repo +new-project:master +site3a:Rails3

Das Ergebnis ist, dass der bereits vorhandene Zweig site3a jetzt auch in das neue Repo verschoben wird und als Rails3 angezeigt wird. Das funktioniert wirklich gut: Das Netzwerkdiagramm zeigt die neuen master und Rails3 mit vollständiger Historie und in der richtigen Beziehung zueinander.

Update 2013-12-07: Verwendet dies mit einem anderen Projekt und verifiziert, dass dieses Rezept noch funktioniert.

Update 2018-01-11: Schritt 3 wurde aktualisiert, um die GitHub-Empfehlung für das https-Protokoll zu verwenden. Rezept funktioniert noch.

238
Dogweather

Aktualisieren:

cD zum lokalen Repo mit old_branch und:

$ git Push https://github.com/accountname/new_repo.git +old_branch:master
17
git clone -b new-project /path/to/repo /new/repo/path

Bearbeiten: Innerhalb von GitHub können Sie das Repo „verzweigen“ und dann in Ihrem Klon auf die Registerkarte „Admin“ gehen. Unter "Repository-Name" und "Sichtbarkeit" befindet sich "Default Branch" mit einem Dropdown-Menü mit Verzweigungen. Wählen Sie new-project.

Erneut bearbeiten: Ich habe gerade festgestellt, dass es sich um den master-Zweig handelt, den Sie festlegen möchten, nicht nur um den "Standard" -Zweig. So…

  • Klonen Sie auf GitHub them/repo in you/repo
  • git clone [email protected]:you/repo.git ausführen 
  • Starten Sie gitk
  • [Möglicherweise möchten Sie einen old-master-Zweig erstellen, damit Sie die alten Commits nicht aus den Augen verlieren.] 
  • Suchen Sie nach dem neuesten Commit für den Zweig new-project, klicken Sie mit der rechten Maustaste auf die Commit-Nachricht und wählen Sie "Master-Zweig auf hier zurücksetzen". (Sie können dies auch in der Befehlszeile mit git-reset tun, aber ich habe den richtigen Aufruf nicht gefunden.)

Ihr nächster Push-Up zu Ihrem GitHub-Repo muss mit der --force-Option erfolgen, ansonsten sind Sie damit fertig.

Wenn es sich um eines Ihrer eigenen Repos handelt, tun Sie dies, um…

  • git clone [email protected]:you/orig.git ausführen 
  • git clone orig copy ausführen 
  • Wie oben beschrieben, aber aus dem lokalen copy-Repo, setzen Sie den Zweig master an die gewünschte Stelle zurück. 
  • Erstellen Sie das leere GitHub-Projekt you/copy. Folgen Sie den Anweisungen auf GitHub, um dieses Projekt als Remote für Ihre lokale Version von copy und Push master einzurichten, und Sie sind fertig!
8
J. C. Salomon

Denken Sie daran, dass Sie beim Erstellen eines neuen Repos den Bezug zum alten verlieren und es schwieriger wird, alle Aktualisierungen des ursprünglichen Projekts, die mit dem neuen synchronisiert sind, aufrecht zu erhalten. Vielleicht ist es nicht besser, das Repo zu fassen?

1
Julio Flores
  1. Erstellen Sie das NEW_REPOSITORY in github.
  2. cd OLD_REPOSITORY
  3. git Push https://github.com/accountname/NEW_REPO + master: master

Und das ist alles. (Anmerkung: Git-Geschichte erhalten)

Ich hatte die Antwort oben ausprobiert und fand sie nicht spezifisch genug, da sie + master: master nicht spezifizierte, was ich brauchte, damit sie funktioniert. Es funktioniert super.

Quelle (mit meinen Änderungen, um ssh-Probleme mit github zu vermeiden): Mauricio Aiello, ehemaliger Java-Senior-Entwickler, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from -a-Verzweigung in einem vorhandenen Repository

1
Joe

Nicht sicher, ob dies ein guter Weg ist, aber es ist trotzdem einfach:

git clone -b new-project [email protected]:User/YourProject.git newProjcet

Dann erstellen Sie ein neues Repo auf github und drücken Sie es.

1
Kjuly

Kleine Ergänzung zur richtigen Antwort:

$ git Push [email protected]: Kontoname/Neue_Repo + Alte_Branche: Master

"[email protected]: accountname/new_repo" => von github "Klonen oder Download" -Menü aufrufen

0
Gerd