Подтвердить что ты не робот

Git Pull vs Git Rebase

Я noob в Git и пытаюсь узнать разницу между git pull vs git rebase. Может ли кто-нибудь представить пример, когда использовать этот вариант, поскольку я чувствую, что оба они служат одной цели.

4b9b3361

Ответ 1

git pull и git rebase не являются взаимозаменяемыми, но они тесно связаны.

git pull извлекает последние изменения текущей ветки с удаленного компьютера и применяет эти изменения к вашей локальной копии ветки. Обычно это делается путем слияния, то есть локальные изменения объединяются с удаленными изменениями. Так что git pull похож на git fetch & git merge.

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

Вы можете тянуть, используя rebase вместо слияния (git pull --rebase). Внесенные вами локальные изменения будут перебазированы поверх удаленных изменений, а не объединены с удаленными изменениями.

У Atlassian есть отличная документация по слиянию и перебазированию.

Ответ 2

git-pull - извлечение и интеграция с другим репозиторием или локальной веткой GIT PULL

По сути, вы перетаскиваете удаленную ветку на локальную, например:

git pull origin master

Потянет ветку master в ваш локальный репозиторий

git-rebase - локальные коммиты Forward-порта для обновленного заголовка восходящего потока GIT REBASE

В этом случае ваши локальные изменения будут добавлены к изменениям, выполненным удаленно другими пользователями. Например:

  • Вы совершили некоторые изменения в своей локальной ветке, например, под названием SOME-FEATURE
  • Ваш друг тем временем работал над другими функциями, и он слил свою ветку в мастер

Теперь вы хотите увидеть его и ваши изменения в вашем местном филиале. Итак, вы оформляете master ветку:

git checkout master

тогда вы можете тянуть:

git pull origin master

и тогда вы идете в свою ветку:

git checkout SOME-FEATURE

и вы можете сделать rebase master чтобы получить последние изменения от него и поместить ваши ветки коммитов сверху:

git rebase master

Надеюсь, теперь это станет более понятным для вас.

Ответ 3

В двух словах:

→ Git Merge: он просто объединит ваши и удаленные изменения, и это создаст еще одну запись истории коммитов

→ Git Rebase: он поместит ваши изменения выше всех новых удаленных изменений и переписает историю коммитов, так что ваша история коммитов будет намного чище, чем git merge. Ребаз это разрушительная операция. Это означает, что, если вы не примените его правильно, вы можете потерять совершенную работу и/или нарушить целостность других репозиториев разработчиков.