Git: получить удаленную ветку

При сотрудничестве с коллегами или даже когда вы просто используете библиотеку с открытым исходным кодом, вам часто нужно получить ветку из удаленного репозитория с помощью Git. «Базовый вариант» для выборки ветки довольно прост, но, как и в случае со многими другими операциями Git, он может сбивать с толку, когда вводятся другие ограничения, и вам нужно начать использовать один из множества доступных вариантов. В этой статье я попытаюсь пролить свет на команды, которые необходимо запустить, и параметры, которые обычно используются вами.

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

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

Как правило, вам нужно выполнить эту последовательность:

 $ git fetch <remote-repo> <remote-branch>:<local-branch> 
 $ git checkout <local-branch> 

Команда fetch извлечет интересующую вас удаленную ветку и все связанные объекты и ссылки, сохраняя их в новой локальной ветке, которую вы указали аргументом <local-branch> .

Как только все будет загружено из удаленного репозитория, вы можете проверить его, чтобы проверить и поиграть с кодом.

Если у вас есть только одно удаленное репо, вы можете опустить все аргументы для git fetch , который будет извлекать все ветки и обновления, а затем запустить git checkout <branch-name> поскольку все удаленные ветки уже есть в вашей системе.

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

Часто вам нужно, чтобы ваша новая локальная ветвь отслеживала удаленную, что помогает легко извлекать и отправлять изменения. Для этого вы должны использовать параметр --track с командой checkout , которая одновременно проверяет ветку и отслеживает ее с помощью удаленной ветки. Вот как бы это выглядело:

 $ git checkout --track <remote-repo>/<remote-branch> 

Это создаст локальную ветку с тем же именем, что и удаленная.

Если вы хотите преобразовать удаленную ветку в локальную, но с другим именем, вам необходимо включить параметр -b для создания новой локальной ветки:

 $ git checkout --track -b <local-branch> <remote-repo>/<remote-branch> 

На практике это будет выглядеть примерно так:

 $ git checkout --track -b fix-144 origin/bug-144 
 Branch fix-144 set up to track remote branch bug-144 from origin. 
 Switched to a new branch 'fix-144' 

Чтобы убедиться, что ваша новая ветка отслеживает удаленную ветку, запустите команду branch с параметром -vv :

 $ git branch -vv 
 * fix-144 0774548 [origin/bug-144] Fix #144 
 master dc538f6 [origin/master] 4.16.4 

Если вам интересно узнать, как работает код Git, ознакомьтесь с проектом Initial Commit.

Licensed under CC BY-NC-SA 4.0
comments powered by Disqus