Git Hub Clone Все ветки сразу
Я пытаюсь клонировать весь репозиторий на моей машине, используя linux. я использовал
git clone <url>
Затем я зашел в папку, где она была загружена и напечатана
git branch
в терминале. Это показывает только мастер, а не другие ветки, которые находились в удаленном хранилище. Как клонировать все ветки?
Я знаю, что для каждой ветки в удаленном я могу отдельно использовать
git checkout -b <name of local branch> origin/<name of remote branch>
но есть ли другой способ, кроме этого?
Ответы
Ответ 1
(1) Внутри git local repostitory создайте новый файл sh
touch getAllBranches.sh
vi getAllBranches.sh
(2) Вставьте содержимое ниже в файл getAllBranches.sh
:
for branch in 'git branch -a | grep remotes | grep -v HEAD | grep -v master '; do
git branch --track ${branch#remotes/origin/} $branch
done
(3) Получить все ветки:
chmod +x getAllBranches.sh
sh getAllBranches.sh
(4) Проверить результат в локальном хранилище:
git branch
Например, я использую репозиторий: https://github.com/donhuvy/spring-boot
Как вы можете видеть, я получил все ветки на локальном компьютере:
![enter image description here]()
Ответ 2
Это не слишком сложно, очень простые и простые шаги:
После клонирования репо запустите $ cd myproject
git branch -a
Это покажет вам все удаленные ветки.
$ git branch -a
* master
remotes/origin/HEAD
remotes/origin/master
remotes/origin/v1.0-stable
remotes/origin/experimental
Если вы хотите работать с удаленной ветвью, вам нужно создать локальную ветвь отслеживания:
$ git checkout -b experimental origin/experimental
Проверьте, находитесь ли вы в нужном ветки следующей командой;
$ git branch
Результат будет таким:
*experimental
master
some branch2
some branch3
Обратите внимание на знак *, обозначающий текущую ветку.
Ответ 3
git clone --bare <repository url goes here> .git
Затем, после того, как репо будет клонировано со всеми его ветвями, сделайте следующее
git config --bool core.bare false
git reset --hard
Ответ 4
Это показывает только мастер, а не другие ветки, которые находились в удаленном хранилище. Как клонировать все ветки?
Филиалы, по существу, указывают на фиксации. Когда вы делаете git clone
(или git fetch
), вы извлекаете все коммиты из удаленного репозитория и все его ветки.
Однако git branch
по умолчанию не показывает удаленные ветки. Вместо этого он показывает ваши локальные ветки, которые могут иметь или не иметь никакого отношения к ветвям, которые существуют на пульте дистанционного управления. Если вы запустите git branch --all
, git сообщит обо всех ветвях, о которых он знает, как локальных, так и удаленных.
Стоит отметить, что теги не работают таким образом, и нет никакого различия между локальным и удаленным тегом.
Ответ 5
Чтобы загрузить полный репозиторий, включая все ветки, используйте следующую команду: git clone --mirror <URI>
Это создаст папку с именем repository.git
если вы не дадите ей другое имя.
Теперь это дает вам полный клон исходного репозитория, но поскольку он работает в режиме bare=true
, у вас нет рабочего дерева. Фактически, у вас есть папка .git
, включая все ветки и содержимое. Это причудливый способ сказать, что у вас не будет прямого доступа к файлам, потому что они скрыты в системе git (сжатые и т.д.).
Чтобы сделать это "нормальным" git-репо, нам нужно сделать этот клонировать папку .git
в новой папке, которая будет нашей обычной папкой репо:
mkdir <repo folder name> mv repository.git <repo folder name>/.git cd <repo folder name> git checkout master
Обратите внимание: нет никакой отдельной команды git для загрузки всех удаленных веток, поэтому самый простой способ - убедиться, что все транзакции переместились в начало координат, а затем повторно загрузите весь репозиторий заново с помощью этой опции --mirror.
Ответ 6
Я считаю, что это простое решение для клонирования репозитория git и всех удаленных веток:
# Clone remote repository and all branches
git clone --mirror https://github.com/test/frontend.git frontend/.git
# Change into frontend directory
cd frontend
# Update git config
git config --unset core.bare
# Checkout master branch
git checkout master
Ответ 7
git clone --bare https://repo.git projectName
cd projectName
git push --mirror https://repo.git https://help.github.com/en/articles/duplicating-a-repository
это делает ваш репо полностью идентичным.