Jak sklonować pojedynczą gałąź w Git?
Mam lokalne repozytorium Git o nazwie 'skeleton' , którego używam do przechowywania szkieletów projektu. Ma kilka gałęzi, dla różnych rodzajów projektów:
casey@agave [~/Projects/skeleton] git branch
* master
rails
c
c++
Jeśli chcę sprawdzić gałąź master dla nowego projektu, mogę zrobić
casey@agave [~/Projects] git clone skeleton new
Initialized empty Git repository in /Users/casey/Projects/new/.git/
I wszystko jest takie, jakie chcę. W szczególności, nowa gałąź master wskazuje na szkielet gałąź master i mogę naciskać i ciągnąć, aby poruszać się po zmianach w podstawowej konfiguracji projektu.
To, co nie działa, jednak, jeśli chcę Sklonuj kolejną gałąź. Nie mogę tego uzyskać, aby wyciągnąć tylko gałąź, którą chcę, na przykład gałąź rails
, a następnie nowe repozytorium ma gałąź master
, która domyślnie pcha się do i ciągnie z gałęzi rails
repozytorium szkieletu.
Czy jest dobry sposób, aby to zrobić? Albo, może to nie jest sposób, w jaki Git chce, żebym wszystko uporządkował i jestem na to otwarty. Być może powinienem mieć wiele repozytoriów, a szkielet Ruby on Rails śledzi master szkielet repozytorium? Oraz każdy indywidualny projekt klonujący repozytorium szkielet Ruby on Rails.
14 answers
Uwaga: git1.7.10 (kwiecień 2012) faktycznie pozwala sklonować tylko jedną gałąź :
# clone only the remote primary HEAD (default: origin/master)
git clone --single-branch
as in:
git clone <url> --branch <branch> --single-branch [<folder>]
Widać to w t5500-fetch-pack.sh
:
test_expect_success 'single branch clone' '
git clone --single-branch "file://$(pwd)/." singlebranch
'
Tobu komentarze, że:
Jest to niejawne podczas wykonywania płytkiego klonu.
To sprawia, żegit clone --depth 1
jest najprostszym sposobem na zapisanie przepustowości.
I od Git 1.9.0 (luty 2014), płytkie klony obsługują transfer danych (push/pull) , więc opcja teraz jest jeszcze bardziej przydatny.
Zobacz więcej w " Czy git clone --depth 1
(shallow clone) jest bardziej przydatny niż się wydaje?".
Jeśli chcesz, aby twój klon był w pełni zgodny z Twoimi wymaganiami, skontaktuj się z nami, aby uzyskać więcej informacji na ten temat.]}
# unshallow the current branch
git fetch --unshallow
# for getting back all the branches (see Peter Cordes' comment)
git config remote.origin.fetch refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
Jako Chris komentarze:
Magiczna linia do usuwania brakujących gałęzi do odwrócenia
--single-branch
to (git v2. 1. 4):
git config remote.origin.fetch +refs/heads/*:refs/remotes/origin/*
git fetch --unshallow
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:02:47
Jednym ze sposobów jest wykonanie następujących czynności.
git clone user@git-server:project_name.git -b branch_name /your/folder
Gdzie branch_name
jest wybraną gałęzią, A"/your / folder " jest folderem docelowym dla tej gałęzi. To prawda, że przyniesie to inne gałęzie dające możliwość łączenia się tam iz powrotem. Teraz, począwszy od Git 1.7.10, możesz teraz zrobić to
git clone user@git-server:project_name.git -b branch_name --single-branch /your/folder
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:53:29
Używając Git w wersji 1.7.3.1 (w systemie Windows), oto co robię ({[1] } to nazwa gałęzi, z której chcę dokonać zakupu, a {[2] } To Adres URL zdalnego repozytorium, z którego chcę sklonować):
mkdir $BRANCH
cd $BRANCH
git init
git remote add -t $BRANCH -f origin $REMOTE_REPO
git checkout $BRANCH
Zaletą tego podejścia jest to, że kolejne wywołania git pull
(lub git fetch
) również pobierają żądaną gałąź.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:52:35
Możesz spróbować dłuższej drogi:
mkdir newrepo.git
cd newrepo.git
git init
git remote add origin file:///path/to/original
git fetch origin branchiwant:refs/remotes/origin/branchiwant
git checkout -b branchiwant --track origin/branchiwant
To co robi to:
- Utwórz i init puste repozytorium Git.
- dodaje oryginalne repozytorium jako zdalne o nazwie origin.
- pobiera tylko gałąź, której potrzebujesz z pilota o nazwie origin.
- tworzy i sprawdza nową gałąź, która jest skonfigurowana do śledzenia gałęzi źródłowej, którą właśnie sklonowałeś.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:51:58
Możesz to zrobić używając poniższego polecenia:
git clone -b branch_name --single-branch project_url local_folder_to_clone_in
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-06 06:46:19
From git-clone man page :
--single-branch
jest twoim przyjacielem podczas klonowania
pamiętaj, aby używać z --branch <branch name>
lub tylko zdalna Głowica główna zostanie sklonowana (domyślnie master)
Zawsze pamiętaj aby wykonać Ctrl + F5 do odczytu świeżego źródła, a nie tego z cache :-) (Nie wiedziałem więc o tej opcji przez długi czas.)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:54:37
git clone <url> --branch <branch> --single-branch
Wystarczy wpisać adres URL i nazwę gałęzi.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:56:30
Można wykonać w 2 krokach
-
Klon repozytorium
git clone <http url>
-
Sprawdź wybraną gałąź
git checkout $BranchName
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-21 02:55:32
Po zakończeniu klonowania musiałem wpisać git submodule update --init --recursive
, aby pobrać wszystkie podmoduły
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-13 00:08:15
Otwórz cmd.
cd folder_name
(wprowadź ścieżkę, gdzie należy sklonować gałąź)
Tylko jedno polecenie:
git clone url_of_projecturltoclone -b branch_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:57:20
Do klonowania gałęzi Gita, do której nie masz klucza publicznego, użyj tego:
git clone -b <branch> <Git repository URL or clone URL you get from Git repository>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:58:07
Do klonowania określonej gałęzi można wykonać:
git clone --branch yourBranchName [email protected]
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-23 16:27:27
Klonuj tylko jedną gałąź. Jest to najprostszy sposób:
$ git clone -b BRANCH_NAME --single-branch [email protected]:___/PROJECTNAME.git
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:58:32
- Open Git Bash shell.
- Utwórz katalog w systemie plików, w którym chcesz dokonać zakupu.
- $ mkdir Feature_develop_branch
- zmień katalog na feature_develop_branch.
- $ cd Feature_develop_branch
- Sklonuj repozytorium używając zewnętrznego adresu URL.
- $ git clone https://someurl./ align = "left" / git
- po klonowaniu Zmień katalog do utworzonego repozytorium.
- $ cd / repositoryName
Zobacz też
- $ Git checkout
<Branch Name>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-13 19:55:51