Я noob в Git и пытаюсь узнать разницу между git pull
vs git rebase
. Может ли кто-нибудь представить пример, когда использовать этот вариант, поскольку я чувствую, что оба они служат одной цели.
Git Pull vs Git Rebase
Ответ 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. Ребаз это разрушительная операция. Это означает, что, если вы не примените его правильно, вы можете потерять совершенную работу и/или нарушить целостность других репозиториев разработчиков.