Как правильно обновить ветку?
Нужно скачать обновленную ветку master с удаленного репозитория и далее все изменения из этой ветке применить в своей, чтобы моя ветка стала такой же, как master . Как это правильно сделать?
Отслеживать
задан 8 фев 2021 в 10:07
1,833 1 1 золотой знак 20 20 серебряных знаков 39 39 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Команда git pull используется для извлечения и загрузки содержимого из удаленного репозитория и немедленного обновления локального репозитория этим содержимым. Команда git pull на самом деле представляет собой комбинацию двух других команд: git fetch и git merge. На первом этапе git pull выполняется команда git fetch, ограниченная локальной веткой, на которую указывает HEAD. Сразу после загрузки содержимого команда git pull выполняет слияние. Для слитого содержимого создается новый коммит, а указатель HEAD обновляется и начинает указывать на этот новый коммит.
Отслеживать
ответ дан 8 фев 2021 в 10:12
Sergey Samusik Sergey Samusik
26 5 5 бронзовых знаков
В принципе, @SergeySamusik правильно написал, но не до конца. Предложенным способом Вы обновите локальный master , а дальше объединяете изменения мастера со своими с помощью merge . Если же Вам нужно сделать локальную ветку точной копией мастера, отбросив все, что в ней было сделано, то, как по мне, проще пересоздать ветку от нового состояния мастера.
8 фев 2021 в 12:26
@ЮрийКозлов, а pull , разве, не делает merge ?
8 фев 2021 в 12:48
@nup pull делает мерж, но между локальной и удаленной копией одной ветки (например origin/master и master ). А у ТС, как понимаю, есть мастер-ветка ( master ), и есть своя ветка (например, branch-1 ) , и ему нужно перенести изменения из удаленного мастера не в его локальную копию ( origin/master -> master ), а в свою ветку ( origin/master -> branch-1 ).
A3.5 Приложение C: Команды Git — Совместная работа и обновление проектов
Не так уж много команд в Git требуют сетевого подключения для своей работы, практически все команды оперируют с локальной копией проекта. Когда вы готовы поделиться своими наработками, всего несколько команд помогут вам работать с удалёнными репозиториями.
git fetch
Команда git fetch связывается с удалённым репозиторием и забирает из него все изменения, которых у вас пока нет и сохраняет их локально.
Мы познакомились с ней в разделе Получение изменений из удалённого репозитория — Fetch и Pull главы 2 и продолжили знакомство в разделе Удалённые ветки главы 3.
Мы использовали эту команду в нескольких примерах из раздела Участие в проекте.
Мы использовали её для скачивания запросов на слияние (pull request) из других репозиториев в разделе Ссылки на запрос слияния главы 6, также мы рассмотрели использование git fetch для работы с упакованными репозиториями в разделе Создание пакетов главы 7.
Мы рассмотрели тонкую настройку git fetch в главе и Спецификации ссылок.
git pull
Команда git pull работает как комбинация команд git fetch и git merge , т. е. Git вначале забирает изменения из указанного удалённого репозитория, а затем пытается слить их с текущей веткой.
Мы познакомились с ней в разделе Получение изменений из удалённого репозитория — Fetch и Pull главы 2 и показали как узнать, какие изменения будут приняты в случае применения в разделе Просмотр удалённого репозитория главы 2.
Мы также увидели как она может оказаться полезной для разрешения сложностей при перемещении веток в разделе Меняя базу, меняй основание главы 3.
Мы показали как можно использовать только URL удалённого репозитория без сохранения его в списке удалённых репозиториев в разделе Извлечение удалённых веток главы 5.
И наконец мы показали как проверять криптографические подписи полученных коммитов, используя опцию —verify-signatures в разделе Подпись коммитов главы 7.
git push
Команда git push используется для установления связи с удалённым репозиторием, вычисления локальных изменений отсутствующих в нём, и собственно их передачи в вышеупомянутый репозиторий. Этой команде нужно право на запись в репозиторий, поэтому она использует аутентификацию.
Мы познакомились с этой командой в разделе Отправка изменений в удалённый репозиторий (Push) главы 2. Там мы рассмотрели основы обновления веток в удалённом репозитории. В разделе Отправка изменений главы 3 мы подробнее познакомились с этой командой, а в разделе Отслеживание веток главы 3 мы узнали как настроить отслеживание веток для автоматической передачи на удалённый репозиторий. В разделе Удаление веток на удалённом сервере главы 3 мы использовали флаг —delete для удаления веток на сервере, используя git push .
На протяжении раздела Участие в проекте мы показали несколько примеров использования git push для совместной работы в нескольких удалённых репозиториях одновременно.
В разделе Публикация изменений подмодуля главы 7 мы использовали опцию —recurse-submodules чтобы удостовериться, что все подмодули будут опубликованы перед отправкой проекта на сервер, что может быть реально полезным при работе с репозиториями, содержащими подмодули.
В разделе Прочие хуки на стороне клиента главы 8 мы поговорили о триггере pre-push , который может быть выполнен перед отправкой данных, чтобы проверить возможность этой отправки.
Наконец, в разделе Спецификации ссылок для отправки данных на сервер главы 10 мы рассмотрели передачу данных с полным указанием передаваемых ссылок, вместо использования распространённых сокращений. Это может быть полезным если вы хотите очень точно указать, какими изменениями хотите поделиться.
git remote
Команда git remote служит для управления списком удалённых репозиториев. Она позволяет сохранять длинные URL репозиториев в виде понятных коротких строк, например «origin», так что вам не придётся забивать голову всякой ерундой и набирать её каждый раз для связи с сервером. Вы можете использовать несколько удалённых репозиториев для работы и git remote поможет добавлять, изменять и удалять их.
Эта команда детально рассмотрена в разделе Работа с удалёнными репозиториями главы 2, включая вывод списка удалённых репозиториев, добавление новых, удаление или переименование существующих.
Она используется практически в каждой главе, но всегда в одном и том же виде: git remote add .
git archive
Команда git archive используется для упаковки в архив указанных коммитов или всего репозитория.
Мы использовали git archive для создания тарбола ( tar.gz файла) всего проекта для передачи по сети в разделе Подготовка релиза главы 5.
git submodule
Команда git submodule используется для управления вложенными репозиториями. Например, это могут быть библиотеки или другие, используемые не только в этом проекте ресурсы. У команды submodule есть несколько под-команд — add , update , sync и др. — для управления такими репозиториями.
Эта команда упомянута и полностью раскрыта в разделе Подмодули главы 7.
Git: обновление ветки до актуального состояния
Если в ветке master появились новые коммиты и вы хотите обновить свою ветку до её состояния, то проще всего это сделать так:
- Находясь в своей ветке выполняем команду git rebase master (либо загружаем с сервера git pull —rebase origin/master )
- Если есть конфликты, то правим их и выполняем git add конфликтующие_файлы , затем git rebase —continue
При этом коммиты вашей ветки окажутся наверху истории изменений.
Другие статьи в блоге:
- Guava — простые рецепты, делающие ваш Java код чище, часть 1
- Тёмная сторона AsyncTask
- Пишем эмулятор CHIP-8. Часть 4: Ядро
- Пишем эмулятор CHIP-8. Часть 3: Примеры программ
- Пишем эмулятор CHIP-8. Часть 2: Ассемблер
Как обновлять ветку git до уровня мастера?
Добрый день.
Допустим есть ветка отвечающая за вывод товаров и услуг.
Ветка товаров слита в мастер, после чего в ветку услуг делается N коммитов, где пишется какая то глобальная конфигурация, изменения которой нужно применить и к ветке товаров.
Как заменить ветку товаров полностью файлами из мастера?
- Вопрос задан более трёх лет назад
- 33096 просмотров
Комментировать
Решения вопроса 1
Senior Ruby on Rails developer
Если вы в мастере, то git pull —rebase
Если вы в ветке, то git pull —rebase origin/master