Как клонировать все удаленные ветки в Git? - PullRequest
3841 голосов
/ 16 сентября 2008

У меня есть ветвь master и development, оба сдвинуты до GitHub . У меня есть clone d, pull ed и fetch ed, но я не могу получить ничего, кроме master ответвления.

Я уверен, что упускаю что-то очевидное, но я прочитал руководство и совсем не радуюсь.

Ответы [ 35 ]

2 голосов
/ 08 декабря 2018

Этот вариант клонирует удаленное репо со всеми локальными филиалами без необходимости извлекать каждую ветку по очереди. Не нужно никаких причудливых сценариев.

Создайте папку с тем же именем репозитория, в который вы хотите клонировать и cd, например:

mkdir somerepo
cd somerepo

Теперь выполните эти команды, но с реальным именем пользователя / reponame репо

git clone --bare git@github.com:someuser/somerepo.git .git
git config --bool core.bare false
git reset --hard
git branch

Voiala! у вас там есть все филиалы!

2 голосов
/ 14 июля 2013

Я собираюсь добавить свои 2 цента здесь, потому что я попал сюда, пытаясь выяснить, как развернуть удаленную ветку, которую я удалил локально. Происхождение не было моим, и я не хотел переживать трудности повторного клонирования всего

Это сработало для меня:

при условии, что вам нужно воссоздать ветку локально:

git checkout -b recreated-branch-name
git branch -a (to list remote branches)
git rebase remotes/remote-origin/recreated-branch-name

Так что, если бы я разветвлялся от gituser / master на sjp, а затем разветвлял его на sjp / mynewbranch, это выглядело бы так:

$ git checkout -b mynewbranch
$ git branch -a
  master
  remotes/sjp/master
  remotes/sjp/mynewbranch
$ git fetch (habit to always do before)
$ git rebase remotes/sjp/mynewbranch
0 голосов
/ 18 августа 2018

Если вы используете BitBucket,

вы можете использовать репозиторий импорта , это импортирует всю историю git (все ветви и коммиты)

0 голосов
/ 12 сентября 2012

Немного опоздал на вечеринку, но я думаю, что это помогает:

mkdir YourRepo
cd YourRepo
git init --bare .git                       # create a bare repo
git remote add origin REMOTE_URL           # add a remote
git fetch origin refs/heads/*:refs/heads/* # fetch heads
git fetch origin refs/tags/*:refs/tags/*   # fetch tags
git init                                   # reinit work tree
git checkout master                        # checkout a branch

Если это сделает что-то нежелательное, я бы хотел знать. Однако до сих пор это работает для меня.

0 голосов
/ 20 ноября 2013

Вот скрипт bash для извлечения всех веток и тегов проекта git в виде снимков в отдельные папки.

https://gist.github.com/hfossli/7562257

Возможно, не то, что было задано напрямую, но некоторые люди могут прийти сюда в поисках этого решения.

...