Рубріки: Теория

Git push, git pull, git fetch — в чем разница? Шпаргалка по git-командам

Валерия Труфанова

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

Давайте поближе познакомимся с командами git push, git pull, git fetch и git merge

Git push

Команда git push в ходе выполнения переносит все изменения, внесенные юзером, в удаленный репозиторий (например, такой как GitHub):

Git push 'remote_name' 'branch_name'

Чтобы отправить данные в удаленный репозиторий, нужно удостовериться, что все перемены зафиксированы в локальном репозитории. После того, как вы внесете изменения локально, вы сможете поделиться ими с помощью git push. Но прежде чем отправлять какие-либо перемены в удаленную ветку, рекомендуется запустить команду git pull. Это обновит локальную ветвь.

Вынужденная команда push при корректировке коммитов:

# make changes to a repo and git add

              git commit --amend

# update the existing commit message

       git push --force origin main

Команда git commit --amend применяется для обновления прошлого коммита. Только после этого измененный коммит вынужденно выпускается с помощью команды git push --force.

Курсы разработчиков от наших партнеров Mate Academy, Robot Dreams и Powercode, помогут вам кратно увеличить ваши технические знания и получить наиболее высокооплачиваемую работу.

Git pull

Команда git pull отвечает за скачивание данных с сервера. Процесс очень похож на клонирование репозитория, но здесь скачиваются не все коммиты, а только новые. 

По сути, git pull — это сочетание команд git fetch (загружает коммиты, ссылки, файлы из удаленного репозитория в локальный) и git merge (объединяет несколько коммитов в один общий).

На первой стадии git pull выполняется команда fetch, ограниченная локальной веткой. Затем команда git pull выполняет слияние и формируется новый коммит.

Git pull для удаленной ветки

git checkout new_feature

git pull <remote repo>

Итак, сначала создается ветка. Затем выполняется команда git pull, в которой раздается удаленный репозиторий. Это ведет к переключению на ветку new_feature. Затем загрузка завершается и реализуется команда git merge, то есть происходит слияние двух веток.

Git fetch

Команда git fetch соединена с удаленным репозиторием, берет все изменения и сохраняет их локально. При клонировании репозитория, команда clone автоматически добавляет удаленный репозиторий под названием origin. Следственно, git fetch origin вынимает материал, отправленный на сервер после клонирования.

Синхронизация с командой git fetch origin

Чтобы рассмотреть процесс синхронизации локального репозитория с основной веткой, используется команда git fetch origin

Это отобразит ветки, которые уже были загружены:

ale8fb5..45e66a4 main -> origin/main

ale8fb5..9e8ab1c develop -> origin/develop

* [new branch] some-feature -> origin/some-feature

Git merge

Команда git merge связывает ряд коммитов в одно целое. В свою очередь git создает коммит слияния, где и объединяются изменения обеих последовательностей.

Конфликт в слиянии

Бывают случаи, когда git находит конфликт в слиянии и к файлам присоединяются индикаторы: <<<<<<<, ======= и >>>>>>>:

<here is some content not affected by the conflict

<<<<<<< main

this is conflicted text from main

=======

this is conflicted text from feature branch

>>>>>>> feature branch;

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

Разница между командами git

Используя pull, git стремится сделать все за вас. То есть сводит любые внесенные коммиты в ветку. При применении fetch, git собирает коммиты и сохраняет их в локальном репозитории. 

Условно говоря, git pull – это последовательность двух команд: git fetch (прием изменений от сервера) и git merge (слияние). 

В свою очередь, git push переносит ветвь разработки в удаленную исходную точку, а git merge — объединяет изменения из разработки в локальную ветку.

Шпаргалка по git-командам

git init — создание новых репозиториев; 

git clone <remote> — клонирование удаленного репозитория;

git rm <file> — удаление файла;

git commit --amend — изменение последнего коммита;

git log — просмотр истории коммитов;

git branch <branch> — создание новой ветки;

git branch –d <branch> — удаление ветки;

git merge <branch> — слияние веток;

git push <remote> <branch> — отправка ветки на удаленный сервер;

git push <remote> :<branch> — удаление ветки на удаленном сервере;

git tag — просмотр меток;

git push <remote> <tag> — обмен метками;

git remote — отображение удаленных репозиториев;

git pull <remote> <branch> — получение данных из удаленного репозитория и слияние с локальным;

git push <remote> <branch> — отправка локальных изменений на удаленный сервер. 

Останні статті

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023