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.
Ich begann mit der Idee von @ user292677 und verfeinerte sie, um mein Problem zu lösen:
$ git Push https://github.com/accountname/new-repo.git +new-project:master
Das neue Github-Repo ist fertig. Das Ergebnis ist;
master
dem new-project des alten Repos entspricht, mitIn 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.
Aktualisieren:
cD zum lokalen Repo mit old_branch und:
$ git Push https://github.com/accountname/new_repo.git +old_branch:master
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…
them/repo
in you/repo
. git clone [email protected]:you/repo.git
ausführen gitk
. old-master
-Zweig erstellen, damit Sie die alten Commits nicht aus den Augen verlieren.] 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 copy
-Repo, setzen Sie den Zweig master
an die gewünschte Stelle zurück. 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!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?
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
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.
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