Может кто-нибудь объяснить "отслеживание ветки", как оно относится к git?
Вот определение из git-scm.com :
'Отслеживающая ветвь' в Git - это локальная ветвь, которая подключена к удаленной ветке. Когда вы нажимаете и тянете за эту ветку, она автоматически толкает и тянет к удаленной ветке, с которой она связана.
Используйте это, если вы всегда вытягиваете из одной ветки вверх по течению в новую ветку, и если вы не хотите явно использовать «git pull».
К сожалению, будучи новичком в git и пришедшим из SVN, это определение не имеет для меня никакого смысла.
Я читаю « Прагматическое руководство по Git » (кстати, отличную книгу), и они, похоже, предполагают, что отслеживание ветвей - это хорошая вещь и что после создания вашего первого удаленного (в данном случае источника) вам следует настройте свою основную ветвь как ветвь отслеживания, но, к сожалению, она не охватывает то, почему ветвь отслеживания является хорошей вещью или какие преимущества вы получаете, настроив основную ветвь в качестве отслеживающей ветви вашего исходного репозитория .
Может ли кто-нибудь, пожалуйста, просветить меня (на английском языке)?
источник
--track
опцию, чтобы создать (локальную) ветвь, в которой одна из этих веток удаленного отслеживания установлена в качестве восходящей . Терминология несколько развилась в период между 2006 и 2019 годами, поэтому разные люди могут иногда означать что-то другое под каждым из этих слов.origin/master
: они находятся в вашем репозитории, но они представляют собой способ помнить имена веток в вашем Git, как это видно в каком-то другом репозитории Gitorigin
. Если вы затем использовать слово вверх по течению , которое является более современным термином, чтобы сказать , что вашmaster
ужеorigin/master
установлен в качестве его вверх по течению , вы можете избежать всего этого терминологической путаницы.Ответы:
Книга ProGit имеет очень хорошее объяснение :
Отслеживание филиалов
Извлечение локальной ветки из удаленной ветки автоматически создает так называемую ветку отслеживания. Отслеживающие ветви - это локальные ветви, которые имеют прямое отношение к удаленной ветви. Если вы используете отслеживающую ветвь и вводите
git push
, Git автоматически знает, какой сервер и ветвь использовать. Кроме того, выполнение вgit pull
то время как в одной из этих ветвей выбирает все удаленные ссылки, а затем автоматически сливается в соответствующую удаленную ветку.Когда вы клонируете репозиторий, он обычно автоматически создает основную ветвь, которая отслеживает происхождение / мастер. Именно поэтому
git push
иgit pull
работают из коробки без других аргументов. Однако вы можете настроить другие ветви отслеживания, если хотите - те, которые не отслеживают ветви по источнику и не отслеживают основную ветку. Простой случай - пример, который вы только что видели, работаетgit checkout -b [branch] [remotename]/[branch]
. Если у вас Git версии 1.6.2 или новее, вы также можете использовать--track
сокращение:Чтобы настроить локальную ветвь с именем, отличным от имени удаленной ветки, вы можете легко использовать первую версию с другим именем локальной ветки:
Теперь ваш местный филиал
sf
будет автоматически выдвигать и вытягиватьorigin/serverfix
.БОНУС: дополнительная
git status
информацияС помощью ветки трекинга
git status
вы узнаете, насколько далеко вы находитесь за вашей веткой трекинга - полезно напомнить, что вы еще не отправили свои изменения! Это выглядит так:или
источник
Ниже приведены мои личные заметки о ветвях отслеживания GIT, надеюсь, это будет полезно для будущих посетителей:
Отслеживание веток и "git fetch":
источник
Книга Pro Git упоминает :
Не совсем. Вопрос SO " Трудно понять
git-fetch
" включает в себя:Но на самом деле, как только вы установите связь между ветвями вверх по течению :
master
origin/master
Затем вы можете рассматривать
master
как локальную ветвь отслеживания : она отслеживает удаленную ветвь отслеживания,origin/master
которая, в свою очередь, отслеживает основную ветвь репо восходящего потокаorigin
.источник
git status
получу сообщение об отслеживании фиксации в отношении репо как источника, так и вышестоящего репозитория? (Настройка: я локально клонировал чье-то репо, перенес свой клон в новое репо на своей учетной записи GitHub и локально установил удаленные и исходящие пульты для своего репозитория github и клонированного клонированного репо соответственно).Вот как я добавил ветку отслеживания, чтобы я мог извлечь ее из своей новой ветки:
источник