Страницы

Поиск по вопросам

понедельник, 25 февраля 2019 г.

Получение кода ветки на удаленном сервере

Я пытаюсь получить код из ветки удаленного репозитория:
Кто-то отправил в репозиторий ветку с названием test с помощью git push origin test. Я могу видеть ветку при помощи git branch -r, но как мне получить эту ветку?
git checkout test не работает. git checkout origin/test что-то делает, но git branch возвращает * (no branch). Я нахожусь на «no branch».
Перевод вопроса «Checkout remote Git branch » @Juri Glass


Ответ

Ответ
Перед тем, как начать работу над удалённой веткой локально, необходимо получить её (fetch). Чтобы получить ветку, необходимо сделать следующее:
git fetch origin
Эта команда обновит все удалённые ветки. Вы сможете видеть все ветки, которые можно получить:
git branch -v -a
Имея список всех веток удалённого сервера, вы можете получить код необходимой ветки для редактирования, и у вас появится её локальная рабочая копия:
git checkout -b test origin/test
Дополнение
В современном Git (>= 1.6.6), достаточно
git checkout test
(Обратите внимание, что test – это не origin/test.) чтобы выполнить волшебную операцию «делай то, что я имею в виду» и создать локальную ветку test, которая будет иметь имя origin/test на удаленном сервере.
Таким образом, в версиях Git ≥ 1.6.6, достаточно следующего:
git fetch git checkout test
Помните, что git checkout test НЕ будет работать в современном git при использовании сразу нескольких удалённых репозиториев. В этом случае воспользуйтесь git checkout -b test remote-name/test

Строка * (no branch) в выдаче git branch означает, что вы находитесь в безымянной ветке, в так называемом состоянии «detached HEAD» (HEAD указывает непосредственно на коммит и не является символической ссылкой на какую-либо ветку). Если в этой безымянной ветке вы произвели несколько коммитов, вы всегда можете создать локальную ветку вне текущего коммита:
git checkout -b test HEAD
На основе ответа @hallski и отвеа @Jakub Narębski

Комментариев нет:

Отправить комментарий