rebase
переписывается история. Это путь более merge
или cherry-pick
- очень продвинутый инструмент, который берет на себя (и может быть опасным, так как он перезаписывает историю ... будьте осторожны с git push -f
). Когда rebase
используется аналогично merge
, процесс довольно отчетливо отличается.
git fetch origin && git merge origin/master
:
- загрузить изменения от происхождения
- слияния изменений в верхней части местного отделения
- разрешения конфликтов и совершать
git fetch origin && git rebase origin/master
:
- скачать чан зок происхождения
- сброс местного отделения в общую точку в истории (коммит, что и локальные/удаленный доля репо)
- перенесется происхождение
- применить коммиты на вершине нового совершает один на один
- разрешать конфликты и совершать для каждого локального изменения
большим преимуществом rebase
в этой ситуации является то, что вы просто обновить свой локальный репозиторий и применяя ваши коммиты на вершине, и там не будет никаких «валовые» Объединить совершить говоря: «эй, я просто объединил этот материал». Недостатком является то, что если у вас есть тонна коммитов, которые изменяют одни и те же файлы, вам придется разрешать конфликт снова и снова, так как нет «грубой» слияния.
Но опять же rebase
- это действительно продвинутый инструмент, предназначенный для перезаписи истории. Вы можете изменить предыдущие заголовки фиксации, удалить фиксации в прошлом, сквонировать много коммитов вместе и т. Д. Read up on it!
Итак, переписывая историю так «свободно», вы теряете отслеживаемость, не так ли? – Julen
Это достойный способ подвести итог, @ Юлен. – Sam