Git Fetch и Git Merge

Автор: | 06.12.2020

В одной из последних статей мы узнали о команде Git push. Команда Git push перемещает изменения, внесенные пользователями в их локальном репозитории, в удаленный репозиторий. Кроме того, передача изменений в удаленный репозиторий позволяет всей команде сотрудничать и делиться своей работой. Но это была одна сторона истории, когда пользователи перенесли свои локальные изменения в удаленный репозиторий. С другой стороны, все остальные члены команды должны синхронизировать эти изменения из удаленного репозитория в свой локальный репозиторий. Поэтому для этого члены команды должны извлечь изменения и объединить их в своем локальном репозитории. В этой статье мы рассмотрим Git Fetch и Git Merge, я покажу, как пользователи могут синхронизировать изменения из удаленного репозитория в свой локальный репозиторий.

Что такое команда Git Fetch?

Команда Git fetch помогает пользователю загружать коммиты, ссылки и файлы из удаленного репозитория в локальный репозиторий.  Другими словами, выполнение этой команды поможет вам увидеть все обновления в удаленном репозитории. Вы можете подумать, а что, если вы не хотите сохранить изменения? Что ж, эта команда нисколько не повредит вашему рабочему репозиторию.

Git Fetch

 

Git fetch — это отличный способ стоять в месте, откуда вы можете видеть изменения и решать, хотите ли вы сохранить их или отказаться от них.

Как использовать команду Git Fetch?

Прежде чем использовать эту команду, давайте внесем некоторые изменения в наш удаленный репозиторий, чтобы мы могли извлечь их через локальный репозиторий.

Читайте также: Подключение локального репозитория к удаленному репозиторию GitHub

Выполните следующие действия в своей учетной записи GitHub:

  1. Во-первых, откройте свою учетную запись GitHub и перейдите в репозиторий.
  1. Во-вторых, откройте Readme.md файл.

Readme.md

  1. В-третьих, нажмите значок редактирования, чтобы отредактировать файл.

Readme.md

  1. В-четвертых, отредактируйте описание файла.

Readme.md

  1. После этого прокрутите вниз, зафиксируйте изменения и нажмите кнопку commit changes (зафиксировать изменения).

commit changes

  1. Изменения будут отражены в файле README.md.

README.md

Теперь, когда у нас есть некоторые изменения в удаленном репозитории, мы должны получить их в нашей локальной рабочей копии репозитория.

  1. Откройте Git bash и перейдите в свой рабочий каталог.
  1. Проверьте наличие чистого рабочего репозитория (никаких зафиксированных изменений).
  1. Наконец, выполните команду в Git Bash: git fetch

Git fetch

Последние две строки означают:

https://<repo_url> : URL-адрес репозитория.

e7b37f6..47b2bf6 : первый хэш-это хэш последней объединенной фиксации в локальном репозитории, а 47b2bf6-это новый хэш-код фиксации/изменения из удаленного репозитория.

Пользователь также может проверить коммиты и недавние действия с помощью команды git log.

Если на вашем экране отображается аналогичный вывод, как показано на рисунке выше, вы успешно извлекли изменения из удаленного хранилища.

Параметры команды Git Fetch

Как и любая другая команда в Git, команда Git fetch также содержит некоторые параметры для быстрого и эффективного использования команды. Давайте обсудим их ниже:

All

Опция all извлекает все удаленные ссылки, файлы и т. д.

git fetch –all

git fetch –all

Dry Run

Dry Run покажет пользователю, как команда будет выполняться без внесения каких-либо изменений.

git fetch –dry-run

git fetch –dry-run

Что такое команда Git Merge?

Команда Git merge — это решение включить изменения, которые вы увидели с помощью команды Git fetch. Как только пользователь будет готов принять изменения из удаленного хранилища, он сможет объединить эти изменения в локальное хранилище. Как следует из названия, вы подтверждаете merge (слияние) этих изменений.

Изображение ниже может помочь прямо описать значение Git Merge.

Git Merge

 

Извлечение изменений, выполненных на удаленном компьютере, происходит с помощью команды fetch, а затем, если пользователь одобряет их, они объединяются с локальным репозиторием.

 Как использовать команду Git Merge?

Чтобы объединить изменения, полученные в предыдущем разделе, выполните следующую команду:

git merge

git merge

Если вы видите такой же результат, значит, вы успешно объединили изменения в своем локальном репозитории. На приведенном выше изображении третья строка показывает написанное Fast-forward (перемотка вперед). Это происходит потому, что это fast-forward merge (быстрое слияние), выполняемое git. Давайте посмотрим, что это такое.

Fast-Forward Merge

Fast-Forward Merge (быстрое слияние) в Git означает, что существует линейный путь от ветви, который отклоняется от ветви, к которой вы сливаетесь. Линейный путь означает, что не было никаких коммитов к главной ветви с тех пор, как ветвь объекта перешла в точку слияния.

Fast-Forward Merge

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

Читайте также: Первый коммит в Git (git commit)

Параметры в Git Merge

–no-ff

Опция –no-ff предотвращает слияние изменений git в ускоренной перемотке вперед.

git merge –no-ff

git merge –no-ff

–no-commit

Опция no-commit не будет автоматически фиксировать слияние git и будет запрашивать вмешательство пользователя для завершения.

git merge –no-commit

–no-commit

В слиянии git есть еще много вариантов, которые вы можете изучить и опробовать в локальном репозитории. Git, будучи системой контроля версий, гарантирует, что истории коммитов этих отдельных ветвей остаются отдельными даже после завершения операции слияния. Слияние Git происходит после выборки изменений, то есть производительность выборки Git уже имеет место. Но есть способ обойти этот двухэтапный процесс и преобразовать его в один шаг. Он известен как pulling (вытягивание)в Git, и команда Git pull выполняет его. Более подробно рассмотрим эту команду в одной из следующих статей.

Частые вопросы

Что отличает git fetch и git pull?

Команда git fetch и команда git pull отличаются друг от друга по работе. Git fetch извлекает изменения, в то время как git pull объединяет их после извлечения. Таким образом, в некотором смысле git fetch является частью git pull, поскольку он сначала извлекает изменения, а затем выполняет git merge.

Могу ли я отменить изменения, внесенные git merge?

Да, в Git слияние изменений может повернуть вспять с помощью следующих действий. Определите коммит, к которому вы хотите вернуться с помощью команды git reflog. Выполните жесткий сброс вместе с хэшем фиксации с помощью git reset –hard <hash>.

Git Pull
git pull

В последнем уроке мы познакомились с командой Git fetch и Read more

Как проверить зафиксированные изменения на GitHub

Мы уже знаем, как вносить изменения в локальное хранилище и Read more

Git Push – вносим изменения на GitHub
Git Push

Команда git push при выполнении перемещает изменения, внесенные пользователем на Read more

Что такое git Clone и как клонировать репозиторий?
Что такое git Clone и как клонировать репозиторий?

"Клонирование" означает создание идентичных особей естественным или искусственным путем. Клонирование Read more

Что такое Git Fork?
Git Fork

Сегодня мы узнаем, как скопировать чужой репозиторий в наш аккаунт Read more

Подключение локального репозитория к удаленному репозиторию GitHub
Подключение локального репозитория к удаленному репозиторию GitHub

Все данные, доступные в локальном репозитории, могут быть загружены в Read more

Раздел: Git Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

11 − четыре =