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?

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.


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 git@github.com: 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ę.


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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.