Гит

Водич за Гит Ребасе

Водич за Гит Ребасе

Почетници Гита упозорени су против наредбе ребасе. И то с правом. Са свим новим стварима које треба научити, почетницима је вероватно боље да савладају основне концепте пре него што се упуштају у замршеност пребазирања. Међутим, ако разумете основе спајања грана, тада вам знање о пребазирању може помоћи да решите неке сложене развојне загонетке када за то дође право време.

Гит Ребасе: Дефиниције

Према гит документацији, наредба ребасе ће поново применити урезивање на врху другог основног савета. Ова дефиниција може бити мало застрашујућа. Лакше је објаснити ребасе као процедуру која додаје промене тренутне гране у реп друге гране. Прођимо кроз пример да бисмо стекли бољу представу о томе шта се дешава.

Пример поновног коришћења Гит-а

У овом примеру ћемо прво створити тест случај са 'мастер' и 'феатуре' граном. Тада ћемо направити стандардно спајање. Даље ћемо поново створити тест случај и извршити пребазу и спајање.

1. Стварање матичних и карактеристичних грана

Ево сценарија који ћемо створити:

А - Б - Ц (главни) \ Е - Ф (карактеристика) 

У горњем примеру, ми идемо следећим путем:

  1. Обвези А: додајемо а.ткт датотеку у грани 'мастер'
  1. Уређивање Б: додајемо б.ткт датотеку у грани 'мастер'
  1. У овој фази креирамо „карактеристику“ гране, што значи да ће имати.ткт и б.ткт
  1. Уређивање Ц: додајемо ц.ткт датотеку у грани 'мастер'
  1. Идемо на грану „функција“
  1. Обавеза Е: модификујемо а.ткт у грани „особина“
  1. Обавеза Ф: модификујемо б.ткт у грани „особина“

Можете створити директоријум и покренути следећи код унутар директоријума да бисте креирали горњу ситуацију:

гит инит тоуцх а.ткт гит адд -А гит цоммит -м "Зарежи А: додато а.ткт "додирните б.ткт гит адд -А гит цоммит -м "Објави Б: додато б.ткт "гит грана карактеристика додир ц.ткт гит адд -А гит цоммит -м "Објави Ц: додато ц.ткт "гит статус гит цхецкоут карактеристика ехо ааа> а.ткт гит адд -А гит цоммит -м "Објави Е: измењено а.ткт "ехо ббб> б.ткт гит адд -А гит цоммит -м "Уређивање Ф: измењено б.ткт " 

2. Једноставно спајање

Употребимо команду лог да проверимо обе гране.

Резултати за 'мастер':

$ гит цхецкоут мастер Пребачен на грану 'мастер' $ гит лог --онелине 2ббде47 Уређивање Ц: додато ц.ткт б430аб5 Уређивање Б: додато б.ткт 6ф30е95 Уређивање А: додато а.ткт $ лс а.ткт б.ткт ц.ткт 

Резултати за 'карактеристика':

$ гит цхецкоут карактеристика Пребачена на грану 'феатуре' $ гит лог --онелине 0286690 Уређивање Ф: измењено б.ткт 7ц5ц85е Уређивање Е: измењено а.ткт б430аб5 Уређивање Б: додато б.ткт 6ф30е95 Уређивање А: додато а.ткт $ лс а.ткт б.ткт 

Приметите како грана обележја нема урезивање Ц

А сада покренимо обједињавање гране „особина“ са границом „мастер“. Од вас ће се тражити да унесете коментар. У коментар додајте „Објави Г:“ на почетку да бисте га лакше пратили.

$ гит цхецкоут мастер Пребачен на грану 'мастер' $ гит мерге феатуре Спајање направљено помоћу 'рекурзивне' стратегије. а.ткт | 1 + б.ткт | Промењене су 1 + 2 датотеке, 2 уметања (+) 

Резултати за 'мастер':

 $ гит цхецкоут мастер Већ на 'мастер' $ гит лог --онелине д086фф9 Уређивање Г: Спајање гране 'карактеристика' 0286690 Уређивање Ф: измењено б.ткт 7ц5ц85е Уређивање Е: измењено а.ткт 2ббде47 Уређивање Ц: додато ц.ткт б430аб5 Уређивање Б: додато б.ткт 6ф30е95 Уређивање А: додато а.ткт $ лс а.ткт б.ткт ц.ткт 

Резултати за 'карактеристика':

$ гит цхецкоут карактеристика Пребачена на грану 'феатуре' $ гит лог --онелине 0286690 Уређивање Ф: измењено б.ткт 7ц5ц85е Уређивање Е: измењено а.ткт б430аб5 Уређивање Б: додато б.ткт 6ф30е95 Уређивање А: додато а.ткт $ лс а.ткт б.ткт 

У 'мастер' грани, приметићете да постоји нова урезивања Г која је објединила промене из 'гране' гране. У основи, догодила се следећа радња:

А - Б - Ц - Г (главни) \ / Е - Ф (карактеристика) 

У урезивању Г, све промене из гране 'својства' унете су у главну грану. Али сама грана „карактеристика“ остала је нетакнута због поступка спајања. Обратите пажњу на хеш сваког урезивања. Након спајања, Е (7ц5ц85е) и Ф (0286690) урезивање има исти хеш на грани „особина“ и „мастер“.


3. Спајање са поновним базирањем

Поновимо корак 1 да бисмо поново креирали гране „мастер“ и „феатуре“.

Резултати за 'мастер':

$ гит цхецкоут мастер Пребачен на грану 'мастер' $ гит лог --онелине 7ф573д8 Уређивање Ц: додато ц.ткт 795да3ц Уређивање Б: додато б.ткт 0ф4ед5б Уређивање А: додато а.ткт $ лс а.ткт б.ткт ц.ткт 

Резултати за 'карактеристика':

$ гит цхецкоут карактеристика Пребачена на грану 'феатуре' $ гит лог --онелине 8ед0ц4е Уређивање Ф: измењено б.ткт 6е12б57 Уређивање Е: измењено а.ткт 795да3ц Уређивање Б: додато б.ткт 0ф4ед5б Уређивање А: додато а.ткт $ лс а.ткт б.ткт 

Поново направимо базу података из гране „карактеристика“.

$ гит цхецкоут карактеристика Пребачена на грану 'феатуре' $ гит ребасе мастер Прво, премотавање главе да бисте репродуковали своје дело поврх ње ... Примена: Уређивање Е: модификовано.ткт Примена: урезивање Ф: измењено б.ткт 

Затим спојите „особину“ у „мастер“.

$ гит цхецкоут мастер Пребачен на грану 'мастер' $ гит мерге феатуре Ажурирање 7ф573д8… 9ефа1а3 Премотавање унапред.ткт | 1 + б.ткт | Промењене су 1 + 2 датотеке, 2 уметања (+) 

Резултати за 'мастер' грана:

$ гит цхецкоут мастер Већ на 'мастер' $ гит лог --онелине 9ефа1а3 Уређивање Ф: измењено б.ткт 8710174 Уређивање Е: измењено а.ткт 7ф573д8 Уређивање Ц: додато ц.ткт 795да3ц Уређивање Б: додато б.ткт 0ф4ед5б Уређивање А: додато а.ткт $ лс а.ткт б.ткт ц.ткт 

Резултати за грану „карактеристика“:

$ гит цхецкоут карактеристика Пребачена на грану 'феатуре' $ гит лог --онелине 9ефа1а3 Уређивање Ф: измењено б.ткт 8710174 Уређивање Е: измењено а.ткт 7ф573д8 Уређивање Ц: додато ц.ткт 795да3ц Уређивање Б: додато б.ткт 0ф4ед5б Уређивање А: додато а.ткт $ лс а.ткт б.ткт ц.ткт 

Приметите да су након ребазирања и спајања обе гране исте. Такође, хеши за Е и Ф су се променили у обе гране. У основи, у сценарију пребазивања, догодило се следеће:

А - Б - Ц \ Е '- Ф' (функција, мастер) 

Због тога нема новог обавезивања. Предмети Е и Ф су прерачунати и учвршћени на крају „главне“ гране.

Предефинирање је користан алат када желите да очистите историју свог рада. Међутим, постоји опасност која је изнедрила златно правило.


Златно правило прекомерног коришћења

Златно правило ребазирања је:

Никада не преусмеравајте јавну грану.

Као што можете видети из горњег примера, поновна база поново израчунава урезивања. Када се више људи разграна из јавног спремишта, прекомерно подешавање базе података може створити ситуације у којима ће програмери који су креирали нове огранке наићи на врло сложене ситуације спајања. Дакле, добра је идеја никада не преусмерити јавне подружнице које се деле.

У закључку:

Ребазирање је јединствена карактеристика Гита. Али користите га опрезно.

Више информација:

Ево неколико веза за даље проучавање:

Гит Ребасе документација
Атлассиан Спајање вс Ребасинг

Референце:

Инсталирајте најновији Долпхин Емулатор за Гамецубе & Вии на Линук
Долпхин Емулатор вам омогућава да играте изабране игре Гамецубе и Вии на Линук Персонал Цомпутерс (ПЦ). Долпхин Емулатор је слободно доступан и емула...
Како се користи ГамеЦонкуерор Цхеат Енгине у Линуку
Чланак покрива водич о коришћењу ГамеЦонкуерор варалице у Линуку. Многи корисници који играју игре на Виндовс-у често користе апликацију „Цхеат Енгине...
Најбољи емулатори играће конзоле за Линук
Овај чланак ће навести популарни софтвер за емулацију играће конзоле доступан за Линук. Емулација је слој компатибилности софтвера који опонаша хардве...