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

  1. git clone --bare https://repo.git projectName
  2. cd projectName
  3. git push --mirror https://repo.git https://help.github.com/en/articles/duplicating-a-repository

    это делает ваш репо полностью идентичным.