Ответ 1
По умолчанию git clone
будет извлекать все ветки, но эти ветки будут храниться как ветки удаленного отслеживания: например, ветка 'dev_XXXXX' будет храниться как 'origin/dev_XXXXX' (с 'refs/remotes/origin/dev_XXXXX 'как полное имя). Эти ветки удаленного отслеживания не будут отображаться в выводе git branch
: вам понадобится git branch -r
для отображения ветвей удаленного отслеживания (или git branch -a
для отображения всех ветвей). Если эти ветки не слишком сильно расходятся с основной линией, они не занимают слишком много места на диске в репозитории. Поэтому я не понимаю, почему вы хотите клонировать только выбранные ветки.
Тем не менее, если вы хотите иметь клон с двумя выбранными ветвями, вы можете сделать это следующим образом:
-
Сначала создайте новый пустой репозиторий
$ mkdir repoclone $ cd repoclone/ $ git init Initialized empty Git repository in /home/user/repoclone/.git/
-
Затем добавьте свой репозиторий под именем "origin" (так же, как "git clone" назовет его), запрашивая отслеживание только двух ветвей: "master" и "dev_swamy", используя " git удаленная". Убедитесь, что он был добавлен правильно.
$ git remote add -t master -t dev_swamy origin [email protected]:repo.git $ git remote origin $ git remote show origin * remote origin Fetch URL: [email protected]:repo.git Push URL: [email protected]:repo.git HEAD branch: master Remote branches: master new (next fetch will store in remotes/origin) dev_swamy new (next fetch will store in remotes/origin)
Если стабильная ветвь называется "стабильной", а не "хозяином", вы, конечно, должны изменить вышеприведенный пример. Также есть опция
-m <branch>
, если вы хотите, чтобы указанная ветка была ветвью по умолчанию на удаленном компьютере. -
Извлечь из "origin" (вы можете сделать это также, используя опцию
-f
для "git удаленный добавление" выше):$ git fetch remote: Counting objects: 282, done. remote: Compressing objects: 100% (193/193), done. remote: Total 282 (delta 82), reused 0 (delta 0) Receiving objects: 100% (282/282), 81.30 KiB | 135 KiB/s, done. Resolving deltas: 100% (82/82), done. From [email protected]:repo.git * [new branch] master -> origin/master * [new branch] dev_swamy -> origin/dev_swamy From [email protected]:repo.git * [new tag] v1.0 -> v1.0 * [new tag] v1.0.1 -> v1.0.1 * [new tag] v1.1 -> v1.1
-
Настройте локальную ветвь "master" (где вы будете делать свою работу), чтобы следовать "origin/master" (чтобы иметь "origin/master" как вверх по течению), так же, как "git clone"
$ git checkout -t origin/master Branch master set up to track remote branch master from origin. Already on 'master'
Вы можете повторить это для ветки dev_swamy.
-
Теперь вы можете увидеть, как выглядит файл конфигурации. Вы можете получить точно такой же результат, отредактировав файл
.git/config
, чтобы выглядеть следующим образом: "git fetch" .$ cat .git/config # or just open this file in your editor [core] repositoryformatversion = 0 filemode = true bare = false logallrefupdates = true [remote "origin"] url = [email protected]:repo.git fetch = +refs/heads/master:refs/remotes/origin/master fetch = +refs/heads/dev_swamy:refs/remotes/origin/dev_swamy [branch "master"] remote = origin merge = refs/heads/master
Не забудьте представить себя Git перед тем, как начать работу с репозиторием (т.е. установите переменные конфигурации user.name и 'user.email', обычно в конфигурационном файле для каждого пользователя)!