Jak przenieść gałąź Git do własnego repozytorium?

180

Mam gałąź, którą chciałbym przenieść do oddzielnego repozytorium Git, i idealnie zachowuję historię tej gałęzi. Do tej pory patrzyłem git filter-branch, ale nie mogę się dowiedzieć, czy to może zrobić to, co chcę.

Jak wyodrębnić gałąź Git do własnego repozytorium?

Aupajo
źródło

Odpowiedzi:

280

Możesz po prostu wypchnąć gałąź do nowego repozytorium. Towarzyszy temu cała jego historia. Następnie możesz wybrać, czy usunąć gałąź z oryginalnego repozytorium.

na przykład

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

W przypadku nowego repozytorium nazwa-nowej-gałęzi jest zwykle nadrzędna.

Można utworzyć nowe, puste repozytorium git init.

CB Bailey
źródło
15
Na wypadek, gdyby ktoś się zastanawiał, zastąpiłem adres URL ścieżką do katalogu repozytorium Git i to działało idealnie.
Aupajo,
48
Możesz także nazwać nazwę oddziału w nowym repozytorium: git push url://to/new/repository.git branch-to-move:new-branch-name
Yves Van Broekhoven
4
Powyższy komentarz Yvesa jest poprawny, w przeciwnym razie nie będzie tam żadnego mistrza, a proces klonowania zakończy się warning: remote HEAD refers to nonexistent ref, unable to checkout.. Jeśli już na tym etapie, po prostu idź git checkout -b branch-to-movei jesteś bezpieczny lub po prostu idź, git checkout -b masteraby
założyć
git checkout -b masterrozwiązałem mój problem, to było na ekranie error: src refspec master does not match any.(dziwne, dlaczego nie widziałem nazwy oddziału, w której byłem) Dziękuję
kangkyu
2
W przypadku, gdy ta odpowiedź również była dla ciebie myląca, oto jak ją zrozumiałem, aby działała: 1) w swoim terminalu, znajdź się w katalogu zawierającym repozytorium i gałąź, którą chcesz przekształcić w nowe repozytorium; 2) urlpowinien być adresem git, na przykład [email protected]: brianzelip / groceries.git; 3) branch-to-movejest gałęzią bieżącego repozytorium, które chcesz przekształcić w nowe repozytorium; 4) new-branch-nameto nazwa, którą chcesz utworzyć dla nowej gałęzi w tworzonym nowym repozytorium, tj master. : .
Brian Zelip
19

Pozwoli to zachować historię wszystkich gałęzi, ale sprawi, że twoja kopia wskaże w szczególności jedną gałąź:

git clone -b newbranch CurrentRepo NewRepo

To niczego nie „przenosi”, po prostu tworzy kopię.

Damon
źródło
2
Warto zauważyć, że clone -bjest nowy. Wymaga git> = 1.6.5 (wydany w październiku 2009 r.).
CB Bailey,
Miałem problem z uruchomieniem tego, ale to było zanim zobaczyłem wiadomość od Charlesa Baileya.
Aupajo,