Что такое ссылка на отслеживание? - программирование
Подтвердить что ты не робот

Что такое ссылка на отслеживание?

Когда я нажимаю новую ветку до удаленного репозитория через Git Extensions, я получаю предупреждение о том, что

The branch {branch name} does not have a tracking reference. Do
you want to add a tracking reference for {branch name}?

Что такое ссылка на отслеживание? Я нашел только несколько упоминаний о ссылках на отслеживание в Google и никакого реального определения.

4b9b3361

Ответ 1

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

Например, рассмотрим следующее:

% git branch -a
* master
  remotes/origin/HEAD -> origin/master
  remotes/origin/maint
  remotes/origin/master
  remotes/origin/next
  remotes/origin/pu
  remotes/origin/todo

Здесь у нас есть ветки на origin, называемые next и todo.

% git checkout -t remotes/origin/next
Branch next set up to track remote branch next from origin.
Switched to a new branch 'next'
% git branch todo    

Теперь у нас есть локальная ветвь next, которая отслеживает удаленную ветку с тем же именем и локальной ветвью todo, которая не будет обновляться с изменениями на remotes/origin/todo.

Ответ 2

Nick Quaranto отличный блог git готовый имеет сообщение, объясняющее удаленные ветки отслеживания:

Отслеживание удаленного отслеживания имеет несколько разных целей:

  • Theyre используется для связи того, что вы работаете на местном уровне, по сравнению с тем, что на пульте дистанционного управления.

  • Они автоматически узнают, какая удаленная ветка получит изменения от когда вы используете git pull или git fetch.

  • Еще лучше, статус git узнает его, сколько вы совершаете перед удаленной версией ветки.

Ответ 3

Локальный ветвь git может отслеживать удаленную ветку, что означает, что команды w2 > push и git будут знать, чтобы потащить и вытащить фиксации в и от отслеживаемой ветки по умолчанию. Также статус git будет указывать статус между вашим текущим местным филиалом и удаленной ветвью, которую он отслеживает. Когда вы клонируете репозиторий git, git добавит ссылку отслеживания на локальную ветвь мастера для отслеживания удаленной основной ветки. Когда вы проверяете новую ветвь удаленного доступа, git добавит ссылку отслеживания в созданную локальную ветвь для отслеживания удаленной ветки, которую вы проверили.

Однако, если вы создаете новую ветвь локально, а затем вставляете ее в удаленный репозиторий, вам нужно явно указать git, если вы хотите, чтобы ваш локальный филиал начал отслеживать новую удаленную ветку. Вы делаете это с опцией -u или --set-upstream при нажатии локальной ветки в удаленный репозиторий: git push -u origin my-new-branch.

Вы можете проверить, какие удаленные ветки отслеживают ваши локальные ветки (если есть) с помощью команды git branch -vv Ниже приведен небольшой пример вывода.

  b1     560eb64 Added file.txt
  b2     560eb64 [origin/b2] Added file.txt
  b3     b638c18 [origin/r1: ahead 1] Added file3.txt
* master 560eb64 [origin/master] Added file.txt

В этом случае мы имеем локальные ветки master, b1, b2 и b3. В ветки master отслеживается удаленная ветвь с именем master, ветвь b1 не отслеживает удаленные ветки, ветвь b2 отслеживает удаленный филиал с именем b2, а ветвь b3 отслеживает удаленной ветки с именем r1. git branch -vv также показывает статус ветки, связанной с отслеживаемой ветвью. Здесь ветвь b3 - это 1 фиксация впереди отслеженной удаленной ветки, а остальные ветки обновляются с соответствующими удаленными отслеживаемыми ветвями.

Итак, если вы создаете локальную ветку и нажимаете на удаленный репозиторий, вы хотите добавить ссылку отслеживания в ветку или нет? Обычно, когда вы нажимаете новую локальную ветвь в удаленный репозиторий, вы делаете это, чтобы сотрудничать с другими разработчиками в этой функции. Если вы добавите ссылку отслеживания в свой локальный филиал, вы можете легко извлечь изменения, которые другие люди внесли в ветвь, поэтому я бы сказал, что в большинстве случаев вы хотите добавить ссылку отслеживания.