Удалённые ветки
это ссылки на состояние веток в ваших удалённых репозиториях.
Это локальные ветки, которые нельзя перемещать. Они двигаются автоматически всякий раз, когда вы осуществляете связь по сети. Удалённые ветки действуют как закладки для напоминания о том, где ветки в удалённых репозиториях находились во время последнего подключения к ним.
Они выглядят как /. Например, если вы хотите посмотреть, как выглядела ветка master на сервере origin во время последнего соединения с ним, проверьте ветку origin/master . Если вы с партнёром работали над одной проблемой, и он выложил ветку feature/53 , у вас может быть своя локальная ветка feature/53 . Но та ветка на сервере будет указывать на коммит в origin/feature/53 . Всё это, возможно, сбивает с толку, поэтому давайте рассмотрим пример.
Скажем, у вас в сети есть свой Git-сервер. Если вы с него что-то склонируете ( Клонировать репозиторий Git ), Git автоматически назовёт его origin , заберёт оттуда все данные, создаст указатель на то, на что там указывает ветка master , и назовёт его локально origin/master .
Git также сделает вам вашу собственную локальную ветку master , которая будет начинаться там же, где и ветка master в origin , так что вам будет с чем работать.
Примечание: origin это не специальное название. Подобно тому, как название ветки master не имеет какого-либо специального значения в Git’е, название origin это тоже просто название. Исходная ветка репозитория называется master по единственной причине, потому, что это название широко используется. Также и origin , это название по умолчанию для удалённой ветки после клонирования. Если вы хотите назвать удалённый репозиторий narnia , вы можете это сделать в диалоге клонирования, и ваша удалённая ветка по умолчанию будет называться narnia/master .
После клонирования история изменений в локальном и удалённом репозитории будет выглядеть следующим образом.
Если вы сделаете что-то в своей локальной ветке master , а тем временем кто-то ещё отправит изменения в удалённый репозиторий и обновит там ветку master , то ваши истории продолжатся по-разному. До тех пор, пока вы не свяжетесь с сервером origin , ваш указатель origin/master не будет сдвигаться.
Для синхронизации вашей работы выполняется команда Групповая разработка > > Получить из origin . Эта команда ищет, какому репозиторию соответствует origin , извлекает оттуда все данные, которых у вас ещё нет, обновляет ваш локальный репозиторий, и сдвигает указатель origin/master на новую позицию.
Чтобы продемонстрировать то, как будут выглядеть удалённые ветки в ситуации с несколькими удалёнными серверами, предположим, что у вас есть ещё один внутренний Git-сервер, который используется для разработки только одной из ваших команд разработчиков. Вы можете добавить его в качестве нового удалённого репозитория так же, как это было описано в разделе Основы Git. Дайте этому удалённому серверу имя teamone .
Теперь можете выполнить Групповая разработка > > Удаленный репозиторий > > Получить из. > teamone , чтобы извлечь всё, что есть на сервере, и нет у вас. Так как в данный момент на этом сервере есть только часть данных, которые есть на сервере origin , Git не получает никаких данных, но выставляет удалённую ветку с именем teamone/master , которая указывает на тот же коммит, что и ветка master на сервере teamone .
45. Добавление ветки наблюдения
Ветки, которые начинаются с remotes/origin являются ветками оригинального репозитория. Обратите внимание, что у вас больше нет ветки под названием style, но система контроля версий знает, что в оригинальном репозитории ветка style была.
01 Добавьте локальную ветку, которая отслеживает удаленную ветку.
Выполните:
git branch --track style origin/style git branch -a git hist --max-count=2
Результат:
$ git branch --track style origin/style Branch style set up to track remote branch style from origin. $ git branch -a style * master remotes/origin/HEAD -> origin/master remotes/origin/style remotes/origin/master $ git hist --max-count=2 * 2faa4ea 2011-03-09 | Changed README in original repo (HEAD, origin/master, origin/HEAD, master) [Alexander Shvets] * 6e6c76a 2011-03-09 | Updated index.html (origin/style, style) [Alexander Shvets]
Теперь мы можем видеть ветку style в списке веток и логе.
xto3na / Git. Создание, удаление удаленной и локальной веток
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Надо добавить удаленную ветку, чтобы она синхронизировалась через pull/push. |
Сначала надо создать удаленную ветку: |
git push origin origin:refs/heads/new_branch_name |
Стянуть ее |
git pull origin |
Посмотреть появилась ли в списке удаленных веток: |
git branch -r |
Создать локальную ветку и закрепить ее за удаленной |
git checkout —track -b new_branch_name origin/new_branch_name |
Удалить удаленную ветку можно так |
git push origin :heads/new_branch_name |
Локальная ветка автоматически создается, когда делаем |
git checkout new_branch_name |
Слить локальную ветку с удаленной можно так: |
git checkout master |
git merge new_branch_name |
Удалить локальную ветку: |
git branch -d new_branch_name |
Полезные ссылки: |
Про Git на пальцах (для переходящих с SVN) — http://habrahabr.ru/post/68341/ |
Pro git — http://git-scm.com/book/ru/ |
Git How To — http://githowto.com/ru/ |
Магия Git — http://diseaz.github.io/gitmagic/ |
Создать локальную ветку которая отслеживает удаленную
‘Отслеживающая ветка’ в Git это локальная ветка которая соединена с удаленной веткой. Когда вы выполняете push и pull на эту ветку, это автоматически выполняет push и pull для удаленной ветки с которой она соединена.
Используйте это если вы всегда выполняете pull из той же главной ветки в новую ветку, и если вы не хотите явно использовать «git pull «.
Команда ‘git clone’ автоматически конфигурирует ветку ‘master’ как отслеживающую ветку для ‘origin/master’ — ветка master в клонируемом репозитории.
Вы можете создавать отслеживающие ветки вручную добавляя параметр ‘—track’ к команде ‘branch’ в Git.
git branch --track experimental origin/experimental
Затем когда вы выполните:
$ git pull experimental
то это автоматически вытянет из ветки ‘origin’ и сольет ‘origin/experimental’ с вашей локальной веткой ‘experimental’ branch.
Подобно этому, когда вы выполните push в origin, то это выполнит push на который ваша ветка ‘experimental’ указывает к ветке origins ветки ‘experimental’, без обязательного определения ее.
This book is maintained by Scott Chacon, and hosting is donated by GitHub.
Please email me at schacon@gmail.com with patches, suggestions and comments.