1

Как создать копию ветки с удаленного репозитория?

Nick Volynkin
  • 34,094
noskovgleb
  • 73
  • 2
  • 2
  • 6
  • 1
    хорошая дока по git вызывается командой
    git help
    
    

    и потом например

    git help checkout
    
    
    

    а где второй вопрос ?

    – zb' Feb 15 '13 at 11:08
  • 1
    пока что не придумал, но скоро будет – noskovgleb Feb 15 '13 at 11:10
  • 1
    кто отмодерировал вопрос ? вы русский язык знаете ? – zb' Feb 15 '13 at 15:43

4 Answers4

6

Современные версии Git позволяют делать это гораздо проще:

git checkout branchname

Работает, когда:

  1. Есть удалённая ветка origin/branchname
  2. Но нет локальной ветки с именем branchname

Допустим, есть удаленная ветка feature, которой у вас ещё нет локально.

$ git branch --all
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/feature
  remotes/origin/master

Достаточно этого:

$ git checkout feature
Branch feature set up to track remote branch feature from origin.
Switched to a new branch 'feature'

Проверяем:

$ git branch --all
* feature
  master
  remotes/origin/HEAD -> origin/master
  remotes/origin/feature
  remotes/origin/master

Новая ветка действительно отслеживает удалённую:

git branch -vv
* feature      ed185c8 [origin/feature] extract environment
  master       4db6d3b [origin/master] stylecheck-driven syntax improvements
Nick Volynkin
  • 34,094
5

Эта команда создаст локальную копию удаленной ветки

git checkout -b remote_branch origin/remote_branch
AlexDenisov
  • 6,442
  • 1
  • 21
  • 29
  • 1
    Разве она не копирует ветку существующего репозитория просто удаленным вариантом? – Aios Feb 15 '13 at 11:16
  • 1
    По-моему этого вопрощающий и хотел добиться, или я неправильно понял вопрос? – AlexDenisov Feb 15 '13 at 11:26
  • 1
    Дело в том что если руководствоваться вашей командой - то клонируется с этого же оригина ветка с удаленного командой git checkout branch

    если же самому приходиться ветку создавать - то ее нужно создать уже на удаленном хосте

    а с удаленного так или иначе нужно брать ветку вариантом ниже... ибо оригин - это есть тот что есть репо вообще...

    может и я вопрос не правильно понял...

    – Aios Feb 15 '13 at 11:42
  • 3
    Я вообще не понял вашего последнего комментария, извините. – AlexDenisov Feb 15 '13 at 11:43
0

Шаг 1. Проверьте настройки "remote.origin.fetch", должно быть так:

$ git config --get remote.origin.fetch

+refs/heads/dev_branch:refs/remotes/origin/dev_branch

Шаг 2. Измените «remote.origin.fetch», чтобы получить (fetch) все ветки:

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

$ git config --get remote.origin.fetch

+refs/heads/:refs/remotes/origin/

Затем вы можете попробовать git pull или git checkout dev_branch, чтобы получить всю ветку.

VVS
  • 364
0
git remote add workflow git://github.com/someuser/somerepo.git
git fetch workflow
git checkout -b remote_branch workflow/somebranch

более ли менее подходящий вариант для удаленного другого не относящегося к вашему репозиторию и создание одной из его веток отдельной веткой в вашем репо..

Aios
  • 475
  • 5
  • 13