Как "отменить" одноразовый клон?

Я клонировал репо, используя

git clone -b <branch name> --single-branch <github url> <target directory>

Это клонировано ТОЛЬКО этой ветвью, но теперь я хочу переключиться на мастер и другие ветки. Есть ли какой-либо способ, кроме очистки и начала клонирования остальной части репо, что я могу отменить предпочтение - единичные ветки?

Ответ 1

Вы можете сказать Git, чтобы вытащить все ветки следующим образом:

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin

Если вы посмотрите в .git/config, это будет выглядеть примерно так:

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
    ignorecase = true
    precomposeunicode = false
[remote "origin"]
    url = https://github.com/owner/repo.git
    fetch = +refs/heads/master:refs/remotes/origin/master
[branch "master"]
    remote = origin
    merge = refs/heads/master
    rebase = true

Я сравнил это с полным клоном и увидел, что единственная разница заключалась в "выборке" под [remote "origin"].

Примечание. Я запускаю Git версию 1.8.2. Параметры конфигурации могут быть изменены, если вы используете более старую версию Git. Если мои команды не работают, я бы рекомендовал просмотреть .git/config, чтобы увидеть, можно ли увидеть что-то подобное.

Ответ 2

Если вы хотите добавить одну ветвь, вы можете сделать следующее:

git remote set-branches --add origin [remote-branch]
git fetch origin [remote-branch]:[local-branch]

Работает с git версией 1.9.1

Ответ 3

Просто добавьте исходное репо в качестве нового пульта и отработайте там?

git remote add path/to/myrepo myNewOrigin
git fetch myNewOrigin

Вы даже можете удалить свой текущий источник "origin" и переименовать "myNewOrigin" в "origin", если хотите.

Оттуда вы можете вытащить/объединить/переустановить.

Ответ 4

Вы можете легко загрузить все ветки, но используя git pull origin *:*