Ich habe mit der Idee von @ user292677 begonnen und sie verfeinert, um mein Problem zu lösen:
- Erstellen Sie das neue Repo in Github.
- CD zu Ihrer lokalen Kopie des alten Repos, aus dem Sie extrahieren möchten. Diese Kopie ist so eingerichtet, dass sie den Zweig des neuen Projekts verfolgt , der zum Master des neuen Repos wird .
$ 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 namens new-repo ,
- dessen
master
entspricht dem neuen Projekt des alten Repos , mit
- Alle Geschichte erhalten.
Tatsächlich stellte ich fest, dass ich mit dieser Methode das neue Repo mit einer handverlesenen Auswahl von Zweigen erstellen konnte, die wie gewünscht umbenannt wurden:
$ git push [email protected]:accountname/new_repo +new-project:master +site3a:rails3
Das Ergebnis ist, dass der bereits vorhandene Site3a- Zweig jetzt auch in das neue Repo verschoben wird und als Rails3 angezeigt wird . Das funktioniert sehr gut: Das Netzwerkdiagramm zeigt den neuen Master und die Rails3 mit vollständigem Verlauf und in ihrer korrekten Beziehung zueinander.
Update 07.12.2013: Wird bei einem anderen Projekt verwendet und überprüft, ob dieses Rezept noch funktioniert.
Update 2018-01-11: Schritt 3 aktualisiert, um die GitHub-Empfehlung für das https-Protokoll zu verwenden. Rezept funktioniert immer noch.
--follow-tags
.push
ein lokales (dhgit init
anstelle von Github> Neu> ...)Aktualisieren:
CD zum lokalen Repo mit old_branch und:
quelle
Bearbeiten: In GitHub können Sie das Repo „gabeln“ und dann in Ihrem Klon zur Registerkarte „Admin“ wechseln. Unter "Repository-Name" und "Sichtbarkeit" befindet sich "Standardzweig" mit einem Dropdown-Menü mit Zweigen. Wählen Sie
new-project
.Erneut bearbeiten: Ich habe gerade festgestellt, dass es sich um den
master
Zweig handelt, den Sie festlegen möchten, und nicht nur um den „Standard“ -Zweig. So…them/repo
auf GitHub zuyou/repo
.git clone [email protected]:you/repo.git
gitk
.old-master
Zweig erstellen, damit Sie die alten Commits nicht aus den Augen verlieren.]new-project
Verzweigung, klicken Sie mit der rechten Maustaste auf die Festschreibungsnachricht und wählen Sie "Master-Zweig auf hier zurücksetzen". (Sie können dies auch über die Befehlszeile mit tungit-reset
, aber ich habe den richtigen Aufruf nicht herausgefunden.)Ihr nächster Push-up zu Ihrem GitHub-Repo muss mit der
--force
Option erfolgen, ansonsten sind Sie fertig.Wenn es eines Ihrer eigenen Repos ist, tun Sie dies, um ...
git clone [email protected]:you/orig.git
git clone orig copy
copy
Setzen Sie denmaster
Zweig wie oben beschrieben, jedoch innerhalb des lokalen Repos, an die gewünschte Stelle zurück.you/copy
. Befolgen Sie die Anweisungen auf GitHub, um dieses Projekt als Fernbedienung für Ihre lokale Version von einzurichtencopy
, zu pushenmaster
, und fertig!quelle
Und das ist alles. (Hinweis: Git-Geschichte erhalten)
Ich hatte die obige Antwort ausprobiert und fand sie nicht spezifisch genug, da sie nicht + master: master spezifizierte, was ich brauchte, damit es funktionierte. Es funktioniert großartig.
Quelle (mit meinen Änderungen, um SSH-Probleme mit Github zu vermeiden): Mauricio Aiello, ehemaliger Java Senior Developer, https://www.quora.com/How-do-I-create-a-new-GitHub-repository-from-a -zweig-in-einem-vorhandenen-Repository
quelle
Ich bin mir nicht sicher, ob dies ein guter Weg ist, aber es ist trotzdem einfach:
Erstellen Sie dann ein neues Repo auf Github und drücken Sie es.
quelle
Denken Sie daran, dass Sie beim Erstellen eines neuen Repos den Bezug zum alten verlieren und es schwieriger machen, Aktualisierungen des ursprünglichen Projekts beizubehalten, die mit dem neuen synchronisiert sind. Vielleicht ist es nicht besser, das Repo zu teilen?
quelle
Kleine Ergänzung zur richtigen Antwort:
$ git push [email protected]: accountname / new_repo + old_branch: master
"[email protected]: accountname / new_repo" => vom github-Pulldown-Menü "Klonen oder Herunterladen" abrufen
quelle