В чем разница между удаленной ветвью отслеживания и веткой удаленной? - PullRequest
7 голосов
/ 26 января 2012

Кажется, что я могу вытащить ветку в удаленном репозитории или перейти к ней из / в ветку, над которой я работаю.Если да, то какова цель удаленного отслеживания ветви?

Это исключительно для цели проверки ветви и просмотра, как она выглядит?Похоже, что ветка удаленного отслеживания похожа на ветку на удаленной ветке.

К вашему сведению: я довольно новичок в git, но прочитал и перечитал много учебников, но я все еще не большеясно по этому вопросу!

Спасибо!

1 Ответ

7 голосов
/ 26 января 2012

Вы правы - удаленные ветви действительно отражают ветви в удаленном репозитории.

Удаленная ветвь и удаленная ветвь отслеживания используются для ссылки на ветвь вида refs/remotes/<remote-name>/<branch-name>, сообщаемую, например, как origin/master.(Обратите внимание, что иногда это путают с понятием ветви, которая отслеживает удаленную ветвь, например, ваша основная ветка связана с origin / master. Терминология неудачная, но мы здесь.)

Цельудаленной ветви отслеживания - это запоминание последней известной позиции ветви в удаленном хранилище.Это необходимо для того, чтобы git pull работал;он выбирает из удаленной ветви (главная ветвь источника), сохраняет ее в удаленной ветви отслеживания (origin/master), а затем объединяет ее локально.Коммиты могут создаваться только локально, а слияния могут выполняться только в рабочем дереве, так что это совершенно необходимо!

Ветвь удаленного отслеживания также полезна, как вы упомянули, для изучения того, что происходит вудаленный репозиторий.По умолчанию существуют удаленные ветви для всех ветвей пульта, поэтому вы можете легко использовать git remote update [--prune] <remote> или git fetch <remote> для их обновления, а затем проверять их и играть с ними, как вам нравится.Обратите внимание, что вы можете делать что-то, кроме проверки их - вы можете сравнивать их (git diff origin/master), узнавать, что есть у источника коммитов, которого у вас нет (git log master..origin/master), или что-то еще, что вам нравится.Поскольку все проверки истории являются локальными, для вас должна быть доступна удаленная ветвь.

Поскольку git push влияет на ветки в удаленной системе, она естественным образом обновляет ваши удаленные ветви отслеживания;было бы не очень разумно изменить хозяина источника, притвориться, что он все еще находится в старом положении, пока вы не получите его!Но на самом деле это не зависит от удаленного отслеживания ветвей.(Если вы установите push.default на отслеживание, будет использовать вашу конфигурацию отслеживания, например, мастер источника отслеживания, чтобы решить, что нажать. Но оно все же на самом деле не зависит ответка удаленного слежения.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...