Я хочу получить ветку branch_1
, которая существует в удаленном репозитории.
Результаты: у меня есть branch_1
в моем локальном репозитории, который отслеживает то же самое branch_1
в удаленном репозитории.
Это очень простая задача, вы можете погуглить
git checkout -b branch_1 --track origin/branch_1
Обычно у вас есть один пульт. По соглашению его обычно называют origin
. Итак, давайте сначала рассмотрим этот случай:
Ваше локальное репо должно знать об удаленной ветке. Может быть уже, но вы можете убедиться с помощью
git fetch
Если вы сделаете git branch -a
, вы должны увидеть что-то вроде
origin/branch_1
Тогда просто
git checkout branch_1
Это увидит, что у вас нет локальной ветки с таким именем и что есть ровно одна удаленная ветка с таким именем, поэтому она создаст локальную ветку и автоматически настроит отслеживание.
Если у пульта другое имя, процедура такая же; вывод приведенной выше команды branch -a
будет немного отличаться, поскольку то, что вы ищете, — это имя удаленной ссылки. (То есть приведенный выше вывод origin/branch_1
состоит из удаленного имени origin
и имени ветки branch_1
.)
Но что, если у вас несколько пультов? Например, у вас может быть origin
, а также удаленный upstream
, из которого origin
был разветвлен. В этом случае возможно, что оба пульта имеют разные версии одной и той же ветки.
$ git branch -a
master
origin/master
origin/branch_1
upstream/branch_1
В этом случае git не будет знать, что делать, если вы просто скажете git checkout branch_1
, поэтому вам нужно быть более явным. Это когда вам придется использовать
git checkout -b branch_1 --track origin/branch_1
(Это предполагает, что вы хотите локально отслеживать версию своего источника; вместо этого вы можете сказать --track upstream/branch_1
, и тогда вы увидите состояние проекта, из которого разветвлен ваш источник.)
Наконец, имейте в виду, что pull
имеет особое значение в git, и то, как вы его используете, не совсем правильно. Это может показаться придиркой, но в git происходит достаточно, чтобы такие вещи действительно повлияли на вашу способность общаться с другими пользователями git.
Для pull
набора изменений необходимо включить эти изменения в текущую локальную ветку (обычно путем слияния или быстрой перемотки вперед). Чаще всего это используется для переноса изменений в локальную ветку из соответствующей удаленной ветки («вытягивание ветки»); но это немного отличается от случая, когда вы хотите создать локальную ветку из текущего состояния удаленной ветки.