2010-02-09 10 views
128

Ich habe einen Zweig, den ich in ein separates Git-Repository verschieben möchte, und im Idealfall die Geschichte dieses Zweiges im Prozess behalten. Bisher habe ich mir git filter-branch angesehen, aber ich kann nicht erkennen, ob es tun kann, was ich machen möchte.Wie verschiebe ich eine Git-Verzweigung in ein eigenes Repository?

Wie extrahiere ich eine Git Verzweigung in ein eigenes Repository?

Antwort

207

Sie können einfach einen Zweig in ein neues Repository verschieben. All seine Geschichte wird damit einhergehen. Sie können dann auswählen, ob die Verzweigung aus dem ursprünglichen Repository gelöscht werden soll.

z.B.

git push url://to/new/repository.git branch-to-move:new-branch-name 

Für ein neues Repository ist new-branch-name in der Regel Master.

Erstellen Sie ein neues, leeres Repository mit git init.

+12

Für den Fall, dass jemand sich fragt, habe ich die URL durch den Pfad zu einem Git-Repository-Verzeichnis ersetzt, und das hat perfekt funktioniert. – Aupajo

+41

Sie können auch den Namen der Zweigstelle im neuen Repository benennen: 'git push url: //to/new/repository.git Verzweigung: new-branch-name' –

+4

Der obige Kommentar von Yves ist korrekt, ansonsten Du wirst dort keinen Master haben und der Klonprozess wird mit der Warnung enden: remote HEAD verweist auf nicht existierende ref, kann nicht zur Kasse gehen. Wenn schon zu diesem Zeitpunkt, gehe einfach mit 'git checkout -b branch-to-move' und du bist sicher oder du gehst einfach mit' git checkout -b master' um deinen Master-Zweig zu haben :) –

12

Dies wird die Geschichte aller Zweige halten, aber Ihre Kopie Punkt zum einem Zweig insbesondere machen:

git clone -b newbranch CurrentRepo NewRepo 

Dies gilt nicht ‚bewegen‘ alles, macht nur eine Kopie.

+2

Beachten Sie, dass 'Klon -b' ist neu. Es erfordert Git> = 1.6.5 (veröffentlicht Oktober 2009). –

+0

Ich hatte Mühe, das zu funktionieren, aber das war, bevor ich die Nachricht von Charles Bailey sah. – Aupajo

Verwandte Themen