Узнайте о git сегодняrebase
Функция, предполагается, что все уже знакомы с git, поэтому другие основы использования git объясняться не будут. Git — это инструмент, поэтому основная цель изучения — понять, что делают его функции, и здесь мы разберем их шаг за шагом.rebase
(перебазировать).
Предположим, нам нужно создать ветку для разработки новых возможностей продукта,
git checkout -b feature
Вы можете видеть, что на данный момент у нас всего две ветки и мы перешли наfeature
на ветке.
Далее мыfeature
Измените содержимое в файле test.txt под веткой и добавьте в негоcontent_feature
, сохраните и отправьте.
git add test.txt
git commit -m 'feature分支'
Ознакомьтесь с материалами ниже:
git log --graph --pretty=oneline --abbrev-commit
В настоящее время,feature
Развитие функции филиала завершено, но иногда мы также можемmaster
Под веткой внесите изменения в этот же файл. Как мы в это времяmaster
Содержимое, добавленное в файл test.txt в ветке,content_master
.
Также сохраните и отправьте.
git add test.txt
git commit -m 'master分支'
Далее наступает момент, когда мыfeature
При разработке новых функций они объединяются в основную ветку.
git merge featture
Вы видите, что в объединенном контенте есть конфликты, нам нужно изменить его вручную. затем измените его наcontent_master_feature
Бар.
Затем повторите отправку, чтобы завершить слияние:
git add test.txt
git commit -m 'merge_master_feature'
Вы можете видеть, что слияние прошло успешно.
. . . . Наконец пришло время поговорить о rebase.
Перебазирование на самом деле является методом слияния веток. Если мы сможем переключиться наfeature
После разветвления используйтеgit reabse master
команда для слияния ветвей. Зачем переключаться на функциональную ветку? И что означает эта команда?
Во-первых, мы должны знать, что использованиеmerge
При слиянии это фактически трехстороннее слияние, то есть измененноеmaster
филиал иfeature
филиал, до модификацииmaster
филиал какБазаобъединены. Пиратское изображение:
Можно считать, что c3 и c4 представляют соответственно修改后的master
филиал,feature
Ветвь, а c2 до модификацииmaster
Ветка, как основа с3, с4.
посмотри на это времяrebase
变基
Разве это имя не просто меняет основу? Так кто же делает базовую ветку? Снова украсть картинку:
Как видите, мы используем c3 в качестве основы, когда修改后master
филиал, иfeature
Изменения отрасли напрямую влияют наmaster
ветвь, образуя новуюmaster
ветвь с4'. Команды для их реализации:
git checkout feature
git rebase master
Как и прежде, сначала нужно разрешить конфликт, и решение предоставляется нам.
git add test.txt
git rebase --continue
В настоящее время,feature(c4')
филиал с修改后的master(c3)
Изменения на основе филиалов.
Затем вы можете вернуться кmaster
ветку и быстро объединить две ветки.
$ git checkout master
$ git merge feature
Говоря об этом, я хочу немного поругать людей, верно?merge
Пока что? хотетьrebase
Почему это так хлопотно? ? Пожалуйста, фото ниже:
Слияние без перебазирования:
Слияние после перебазирования:
Ну да, эффект ребазинга естьУрезанная история, объединенная история ветвей с основной линией.
. . . Эта функция кажется бесполезной?На самом деле эту функцию нужно использовать в определенных сценариях, чтобы иметь очевидный эффект.Например, когда мы вносим изменения в проекты с открытым исходным кодом, поддерживаемые другими, мы должны сначала добавить их в нашу собственную ветку. а затем отправить, но если мы перебазируем, а затем отправим, сопровождающим не нужно выполнять работу по интеграции, они могут просто быстро объединиться.
Я чувствую, что эти функции мне еще далеко. Так что давайте сначала изучим. У вас нет реальных сценариев использования этих более продвинутых функций, и вы скоро забудете их после того, как вы их изучите. Просто поймите их и подождите, пока Когда нам это действительно нужно, это также может ускорить нашу скорость обучения.
Ссылаться на:
Руководство по официальному веб-сайту Git
Подробное объяснение великого бога