2013-07-18 4 views
35

я клонировал репозиторий с помощьюКак «отменить» одноразовый клон?

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

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

ответ

56

Вы можете сказать 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, чтобы увидеть, видите ли вы что-то подобное.

+1

Просто хотел предложить вам отдельное спасибо, потому что я сделал чертовски много чтения и поиска в Интернете, и не смог найти ничего подобного. – danieltalsky

+1

Рад помочь. Инструмент командной строки 'git' невероятно мощный (на самом деле большинство команд реализованы с точки зрения других команд), поэтому вы можете делать с ним много всего, как только вы поймете, как размещается репозиторий (в основном, как папка '.git' работает). – henrikhodne

+0

Это не сработало для меня - после запуска этих команд «git show-ref tags» все еще не удается. – felixfbecker

-1

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

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

Вы можете даже удалить текущую «происхождение» отдаленным и переименовать «myNewOrigin» к «происхождения», если вы хотите.

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

20

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

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

работы с мерзавца версии 1.9.1

+0

Я в тебя влюблен – user1760150

Смежные вопросы