Это хороший вопрос об особо раздражающей терминологии git, хотя проект, похоже, медленно исправляется.
По сути, «track» означает что-то совсем другое в выражениях (a) «ветвь удаленного отслеживания» и (b) «branch1
, настроенный для отслеживания удаленного ветвления branch1
из origin
». Вот краткое резюме:
- "ветка удаленного отслеживания" : ветви удаленного отслеживания - это ветви, которые обычно обновляются с помощью
git fetch
, и, следовательно, git pull
.¹ Вы можете думать о них как о кеше состояние ветки в удаленном репозитории. Вы можете объединиться с ними, изучить их историю и т. Д., Но вы не можете работать с ними напрямую. «Отслеживать» в этой фразе означает, что ветвь удаленного отслеживания представляет состояние ветки в удаленном хранилище в последний раз, когда обновлялась ветвь удаленного отслеживания.
- Ветвь foo настроена на отслеживание удаленной ветки bar от origin : в этой фразе вам говорят, что git установил переменные конфигурации, которые связывают вашу локальную ветку
foo
с веткой удаленного отслеживания origin/bar
. Это позволяет использовать такие приятные функции, как возможность набирать git pull
, пока вы находитесь на ветке foo
, чтобы получить и затем объединить с origin/bar
. Это также помогает вам получать сообщения о состоянии вашей ветки относительно ветки удаленного отслеживания, например: «Ваша ветка foo
на 24 коммита вперед, а origin/bar
может быть быстро перенаправлена». Вам говорят, что ваше местное отделение отслеживает было связано с удаленным отслеживающим филиалом. Вы также слышите, что это origin/bar
означает вверх по течению относительно foo
.
Итак, эти чувства трека / трекинга совершенно разные, и, к сожалению, это общий источник путаницы.
Однако второе чувство, по-видимому, медленно устаревает - например, один из возможных вариантов push.default
раньше был tracking
, но теперь он не рекомендуется в пользу имени параметра upstream
.
Итак, чтобы ответить на ваши вопросы напрямую:
В силу того, что branch1 настроен на отслеживание удаленной ветви branch1 от источника, таким образом, считается ли branch1 удаленной отслеживающей ветвью?
Нет, branch1
не является филиалом удаленного отслеживания.
Когда я запускаю 'git checkout -b branch1 origin / branch1', я создаю локальную (тематическую) ветку (в которую я могу добавить коммиты), которая отслеживает удаленную ветку посредством выборок?
Ну, в некотором роде - это отслеживание (смысл 2) ветви удаленного отслеживания, и последняя обновляется из ветви в удаленном репозитории путем выборок. (Лично я стараюсь избегать термина «удаленная ветвь» в пользу «ветки в удаленном репозитории», на тот случай, если люди подумают, что вы имеете в виду ветку удаленного отслеживания.)
Запуск 'git branch' теперь дает: '* branch1', а запуск 'git branch -r' по-прежнему дает 'origin / branch1' и 'origin / branch2'. Я создал branch1 для добавления коммитов и отслеживания origin / branch1. Какая ветка удаленного отслеживания считается «branch1» из выходных данных «git branch» или «origin / branch1» из выходных данных «git branch -r»?
Ветвь удаленного отслеживания: origin/branch1
.
¹ Они также обновляются при успешном git push
соответствующей ветке в удаленном хранилище.