logo

Git Rebase

Пребазирането е процес за повторно прилагане на ангажименти върху друго базово пътуване. Използва се за прилагане на поредица от ангажименти от отделни клонове в окончателен комит. Това е алтернатива на командата git merge. Това е линеен процес на сливане.

В Git терминът rebase се нарича процес на преместване или комбиниране на поредица от ангажименти към нов базов ангажимент. Пребазирането е много полезно и визуализира процеса в средата на работен процес с разклоняване на функции.

Добре е да пребазирате вашия клон, преди да го обедините.

Git Rebase

Като цяло това е алтернатива на командата git merge. Обединяването винаги е запис, който се променя напред. Сравнително rebase е завладяващ инструмент за пренаписване на история в git. Той обединява различните ангажименти един по един.

Да предположим, че сте направили три ангажимента във вашия главен клон и три в другия ви клон с име test. Ако обедините това, то ще обедини всички ангажименти за известно време. Но ако го пребазирате, тогава той ще бъде обединен по линеен начин. Разгледайте изображението по-долу:

Git Rebase

Изображението по-горе описва как работи git rebase. Трите ангажимента на главния клон се обединяват линейно с ангажиментите на тестовия клон.

Сливането е най-лесният начин за интегриране на клоновете. Той извършва тристранно сливане между двата най-нови ангажимента на клона.

Как да пребазираме

Когато сте направили някои ангажименти на клон на функция (тестов клон) и някои в главния клон. Можете да пребазирате всеки от тези клонове. Използвайте командата git log, за да проследите промените (история на ангажименти). Платете до желания клон, който искате да пребазирате. Сега изпълнете командата rebase, както следва:

Синтаксис:

 $git rebase 

Ако има някои конфликти в клона, разрешете ги и изпълнете командите по-долу, за да продължите промените:

 $ git status 

Използва се за проверка на състоянието,

 $git rebase --continue 

Горната команда се използва, за да продължите с промените, които сте направили. Ако искате да пропуснете промяната, можете да пропуснете както следва:

как работи един компютър
 $ git rebase --skip 

Когато пребазирането приключи. Натиснете хранилището към произхода. Разгледайте примера по-долу, за да разберете командата git merge.

Да предположим, че имате клон да речем тест2 по който работите. Сега сте в клон test2 и сте направили някои промени във файла на проекта нов файл1.txt .

Добавете този файл към хранилището:

 $ git add newfile1.txt 

Сега, ангажирайте промените. Използвайте командата по-долу:

 $ git commit -m 'new commit for test2 branch.' 

Резултатът ще изглежда така:

 [test2 a835504] new commitfor test2 branch 1 file changed, 1 insertion(+) 

Превключете клона към master:

 $ git checkout master 

Изход:

 Switched to branch 'master.' Your branch is up to date with 'origin/master.' 

Сега сте на главния клон. Добавих промените към моя файл, казва нов файл.txt . Командата по-долу се използва за добавяне на файла в хранилището.

 $ git add newfile.txt 

Сега задайте файла за промени:

какво е команда за експортиране в linux
 $ git commit -m ' new commit made on the master branch.' 

Изход:

 [master 7fe5e7a] new commit made on master 1 file changed, 1 insertion(+) HiMaNshU@HiMaNshU-PC MINGW64 ~/Desktop/GitExample2 (master) 

За да проверите хронологията на журнала, изпълнете командата по-долу.

 $ git log --oneline 

Изход:

Git Rebase

Както можем да видим в историята на журнала, има нов ангажимент в главния клон. Ако искам да пребазирам своя клон test2, какво трябва да направя? Вижте сценария за пребазиране на клон по-долу:

Пребазиране на клон

Ако имаме много ангажименти от различни клонове и искаме да ги обединим в едно. За да направим това, имаме два избора или да го обединим, или да го пребазираме. Добре е да пребазирате своя клон.

От горния пример ние сме се ангажирали с главния клон и искаме да го пребазираме на клон test2. Нека видим командите по-долу:

 $ git checkout test2 

Тази команда ще ви превключи на клон test2 от главния.

Изход:

 Switched to branch 'test2.' 

Сега сте в клона test2. Следователно можете да пребазирате клона test2 с главния клон. Вижте командата по-долу:

 $ git rebase master 

Тази команда ще пребазира клона test2 и ще се покаже като Прилагане: нов ангажимент на клон test2 . Помислете за резултата по-долу:

Изход:

Git Rebase

Git Interactive Rebase

Git улеснява с Interactive Rebase; това е мощен инструмент, който позволява различни операции като редактиране, пренаписване, пренареждане, и повече за съществуващи ангажименти. Interactive Rebase може да се управлява само в текущо извлечения клон. Затова задайте вашия локален клон HEAD в страничната лента.

Git interactive rebase може да се извика с команда rebase, просто въведете заедно с командата rebase. Тук ' i ' означава интерактивен. Синтаксисът на тази команда е даден по-долу:

Синтаксис:

 $ git rebase -i 

Той ще изброи всички налични интерактивни опции.

Изход:

Git Rebase

След дадения изход ще се отвори редактор с налични опции. Помислете за резултата по-долу:

Изход:

js base64 декодиране
Git Rebase

Когато изпълним командата git interactive rebase, тя ще отвори вашия текстов редактор по подразбиране с горния изход.

Опциите, които съдържа, са изброени по-долу:

  • Изберете
  • Преформулирайте
  • редактиране
  • скуош
  • Поправям
  • Изп
  • почивка
  • Изпускайте
  • Етикет
  • Нулиране
  • Обединяване

Горните опции изпълняват специфичните си задачи с git-rebase. Нека разберем накратко всяка от тези опции.

Изберете (-p):

Pick означава, че ангажиментът е включен. Редът на ангажиментите зависи от реда на командите за избор по време на пребазиране. Ако не искате да добавите ангажимент, трябва да изтриете целия ред.

Преформулирайте (-r):

Повторната дума е доста подобна на командата pick. Опцията за преформулиране постави на пауза процеса на пребазиране и дава възможност за промяна на съобщението за ангажиране. Това не засяга никакви промени, направени от ангажимента.

Редакция(и):

Опцията за редактиране позволява промяна на ангажимента. Промяната означава, че ангажиментите могат да бъдат добавени или променени изцяло. Можем също така да направим допълнителни ангажименти, преди да възстановим командата за продължаване. Това ни позволява да разделим голям къмит на по-малък; освен това можем да премахнем грешни промени, направени в комит.

Скуош (-ове):

Опцията за скуош ви позволява да комбинирате два или повече ангажимента в един комит. Също така ни позволява да напишем ново съобщение за ангажимент за описание на промените.

Поправка (-f):

Това е доста подобно на командата скуош. Той отхвърли съобщението на ангажимента, който трябва да бъде обединен. По-старото съобщение за ангажимент се използва за описание на двете промени.

Exec (-x):

Опцията exec ви позволява да изпълнявате произволни команди на обвивката срещу ангажимент.

Прекъсване (-b):

Опцията за прекъсване спира повторното базиране на точна позиция. Ще продължи да пребазира по-късно с „ git rebase --continue ' команда.

Капка (-d):

Опцията drop се използва за премахване на ангажимента.

Етикет (-l):

Опцията етикет се използва за маркиране на текущата позиция на главата с име.

Нулиране (-t):

Опцията за нулиране се използва за нулиране на главата към етикет.

пълна форма ide

GitMerge срещу Rebase

Най-често срещаният озадачаващ въпрос за потребителите на git е кога да се използва команда за сливане и кога да се използва rebase. И двете команди са подобни и двете се използват за обединяване на ангажиментите, направени от различните клонове на хранилище.

Не се препоръчва пребазиране в споделен клон, защото процесът на пребазиране ще създаде непоследователни хранилища. За отделни лица повторното базиране може да бъде по-полезно от сливането. Ако искате да видите пълната история, трябва да използвате сливането. Merge проследява цялата история на ангажиментите, докато rebase пренаписва нова.

Git rebase команди, казани като алтернатива на git merge. Те обаче имат някои основни разлики:

Git Обединяване Git Rebase
Сливането създава окончателен ангажимент при сливането. Git rebase не създава ангажимент при rebase.
Той обединява всички ангажименти в един комит. Той създава линейна следа от ангажименти.
Той създава графична история, която може да е малко сложна за разбиране. Той създава линейна история, която може лесно да бъде разбрана.
Безопасно е да обедините два клона. Git 'rebase' се занимава с тежката операция.
Обединяването може да се извърши както на публични, така и на частни клонове. Грешен избор е да се използва повторно базиране на публични клонове.
Сливането интегрира съдържанието на клона на функцията с главния клон. И така, основният клон се променя и историята на разклоненията на функциите остава последователна. Пребазирането на главния клон може да засегне клона на функцията.
Сливането запазва историята. Пребазирането пренаписва историята.
Git merge представя всички конфликти наведнъж. Git rebase представя конфликтите един по един.