Я нуб в Git, и пытаясь понять разницу между git pullпротив git rebase. Может ли кто-нибудь привести пример, когда использовать этот вариант, поскольку я считаю, что оба служат одной цели.
Я нуб в Git, и пытаясь понять разницу между git pullпротив git rebase. Может ли кто-нибудь привести пример, когда использовать этот вариант, поскольку я считаю, что оба служат одной цели.
Ответы:
git pullи git rebaseне взаимозаменяемы, но тесно связаны.
git pullизвлекает последние изменения текущей ветки с удаленного устройства и применяет эти изменения к вашей локальной копии ветки. Обычно это делается путем слияния, т. Е. Локальные изменения объединяются с удаленными изменениями. Так git pullпохоже на git fetch & git merge.
Ребазинг - альтернатива слиянию. Вместо того, чтобы создавать новую фиксацию, которая объединяет две ветки, она перемещает фиксации одной из веток поверх другой.
Вы можете использовать rebase вместо merge ( git pull --rebase). Внесенные вами локальные изменения будут перебазированы поверх удаленных изменений, а не будут объединены с удаленными изменениями.
У Atlassian есть отличная документация по объединению и перемещению .
git-pull - получить и интегрировать с другим репозиторием или локальной веткой GIT PULL
В основном вы перетаскиваете удаленную ветку на свой локальный, например:
git pull origin master
Перетащит основную ветку в ваш локальный репозиторий
git-rebase - локальный прямой порт фиксируется в обновленном заголовке восходящего потока GIT REBASE
Это помещает ваши локальные изменения поверх изменений, сделанных удаленно другими пользователями. Например:
SOME-FEATUREТеперь вы хотите увидеть его и свои изменения в своем локальном филиале. Итак, вы выполняете кассовую masterветку:
git checkout master
тогда вы можете тянуть:
git pull origin master
а затем вы переходите в свою ветку:
git checkout SOME-FEATURE
и вы можете выполнить rebase, masterчтобы получить от него самые последние изменения и поместить свои коммиты ветки вверху:
git rebase master
Надеюсь, теперь вам стало понятнее.
git fetchзатем git rebase origin/master.
В двух словах :
-> Git Merge: он просто объединит ваши и удаленные изменения, и это создаст еще одну запись истории фиксации
-> Git Rebase: он поместит ваши изменения выше всех новых удаленных изменений и перезапишет историю фиксации, поэтому ваша история фиксации будет намного чище, чем git merge. Rebase - это деструктивная операция. Это означает, что если вы не примените его правильно, вы можете потерять выполненную работу и / или нарушить целостность репозиториев других разработчиков.