2016-12-20 23 views
6

Jestem nowy w kontroli wersji git i nie wiem jak sklonować/wyciągnąć konkretną gałąź repozytorium. Próbując dostać oddział master projektu, ale domyślnie oddział test_1Klonowanie określonego oddziału

Próbowałem przy użyciu polecenia git clone ale chwycił domyślne test_1. Próbowałem również czytać inne pytania, ale polecenia są mylące i nie chcę niczego łamać.

Jak mogę sklonować główny oddział tego projektu, aby móc wprowadzać zmiany i naciskać na niego?

+5

Możliwy duplikat [Jak sklonować konkretną gałąź Git?] (http://stackoverflow.com/questions/1911109/how-to-clone-a-specific -git-branch) – osowskit

+0

Nie widzę, jak ta odpowiedź za pomocą 'master' nie jest tym, czego szukasz. http://stackoverflow.com/a/4568323/1375964 – osowskit

+0

@JeffP Bądź grzeczny. Jeśli połączone odpowiedzi nie pomagają, po prostu powiedz dlaczego i podaj więcej szczegółów. – jadhachem

Odpowiedz

19

Można stosować następujące flagi --single-branch & & --depth pobrać konkretną gałąź i ograniczyć ilość historii, który zostanie pobrany.

Będziesz sklonować repo z pewnego punktu w czasie i tylko dla danego oddziału

git clone -b <branch> --single-branch <url> --depth <number of commits> 

- [NIE] pojedynczej gałęzi


Clone tylko historia prowadząca do końcówki pojedynczego oddziału , albo spe określona przez opcję --branch lub zdalne punkty odległego oddziału podstawowego HEAD.

Dalsze pobieranie do wynikowego repozytorium spowoduje jedynie aktualizację gałęzi remote-tracking dla gałęzi tej opcji użytej do początkowego klonowania. Jeśli HEAD na pilocie nie wskazywał żadnego oddziału, gdy został utworzony klon --single-branch, nie utworzono gałęzi zdalnego śledzenia.


--depth

Tworzenie płytki klon z historią obcięty do określonej liczby zmian są

+0

Czy wiesz, z jakiej wersji Git jest dostępna ta opcja? –

+1

1.7.0 i nowsze.Więcej szczegółów tutaj: https://git-scm.com/docs/git-clone/1.7.10 – CodeWizard

5

Nie sądzę cię w pełni zrozumieć jak git domyślnie daje całą historię wszystkich gałęzi.

git clone --branch master <URL> da ci to, co chcesz.

Ale w rzeczywistości, w każdym innym repo, w którym skończyłeś z test_1 wymeldowałeś się, mógłbyś właśnie zrobić git checkout master i przełączyłbyś to do gałęzi głównej.

(Co @CodeWizard mówi to wszystko prawda, tylko że to jest bardziej zaawansowany niż to, czego naprawdę potrzebują.)

8

można użyć tego polecenia do konkretnego klonu oddział:

git clone <url of repo> -b <branch name to be cloned> 

Eg: git clone https://www.github.com/Repo/FirstRepo -b master 
+3

'-b' nie określa gałęzi do klonowania, określa gałąź do Kasa po klonie. – 1615903

+0

Nie, klony to gałąź, którą określiłeś, a jeśli ta gałąź nie jest obecna na zdalnym, spowoduje błąd. –

+0

To po prostu nieprawda, patrz [dokumentacja] (https://git-scm.com/docs/git- klon # git-clone - bltnamegt). Całe repozytorium zostanie sklonowane, a następnie wyszczególniony określony oddział. – 1615903

4

repozytorium git ma kilka oddziałów.Każde odgałęzienie podąża za linią rozwojową i ma swój początek w innej gałęzi w pewnym momencie (z wyjątkiem pierwszej gałęzi, zwykle nazywanej master, która rozpoczyna się jako gałąź domyślna, dopóki ktoś się nie zmieni, co prawie nigdy się nie stanie)

Jeśli jesteś nowy z git, zapamiętaj te 2 podstawy. Teraz wystarczy sklonować repozytorium, a będzie ono w jakiejś gałęzi. Jeśli gałąź jest tą, której szukasz, jest niesamowita. Jeśli nie, po prostu musisz przejść do innej gałęzi - to się nazywa kasowanie. Po prostu wpisz git checkout <branch-name>

W niektórych przypadkach chcesz otrzymywać aktualizacje dla określonej gałęzi. Po prostu wykonaj git pull origin <branch-name> i "pobierz" nowe zatwierdzenia (zmiany). Jeśli nie wprowadziłeś żadnych zmian, powinno to być łatwe. Jeśli wprowadziłeś również zmiany w tych oddziałach, mogą pojawić się konflikty. daj mi znać, jeśli potrzebujesz więcej informacji na ten temat również