Гит

Како скршити Гит комитове

Како скршити Гит комитове

Како да сквошујете обавезе у Гиту да бисте одржали историју чистом

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

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

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

Порадимо на примеру случаја.

Претпоставимо да имамо две датотеке а.пи и б.пи. Прво да прођемо кроз процес креирања датотека и уношења модификација:

$ мкдир мипројецт
$ цд мипројецт /
$ гит инит
$ ецхо "принт (" хелло А ")"> а.пи
$ гит адд -А && гит цоммит -м "Додато а.пи "
$ ецхо "принт (" хелло Б ")"> б.пи
$ гит адд -А && гит цоммит -м "Додато б.пи "
$ ецхо "принт (" хелло ББ ")"> б.пи
$ гит адд -А && гит цоммит -м "б.пи Модификација 1 "
$ ецхо "принт (" хелло БББ ")"> б.пи
$ гит адд -А && гит цоммит -м "б.пи Модификација 2 "

Ако проверимо историју урезивања, видећемо следеће:

$ гит лог --онелине --грапх --децорате
* дфц0295 (ГЛАВА -> мастер) б.пи Модификација 2
* це9е582 б.пи Модификација 1
* 7а62538 Додато б.пи
* 952244а Додато а.пи

Након што завршимо са својим радом, одлучујемо да ставимо све промене у б.пи у једну обавезу ради јасности. Рачунамо да постоје 3 обавезе на б.пи из ГЛАВЕ. Издајемо следећу команду:

гит ребасе -и ГЛАВА ~ 3

Опција -и говори Гит-у да користи интерактивни режим.

Требало би да вам се отвори прозор у вашем Гит едитору текста:

пицк 7а62538 Додато б.пи
пицк це9е582 б.пи Модификација 1
изаберите дфц0295 б.пи Модификација 2
 
# Пребацујте 952244а… дфц0295 на 952244а (3 наредбе)
#
# Команде:
# п, пицк = користи предавање
# р, реворд = користи предавање, али уредите поруку урезивања
# е, едит = користи предавање, али зауставите се ради допуне
# с, скуасх = користи предавање, али спајање са претходним урезивањем
# ф, фикуп = попут "скуасх", али одбаците поруку дневника овог урезивања
# к, екец = команда за покретање (остатак реда) помоћу љуске
#
# Ове линије се могу преуредити; извршавају се од врха до дна.
#
# Ако овде уклоните линију, ТА ОБАВЕЗА ЋЕ СЕ ИЗГУБИТИ.
#
# Међутим, ако уклоните све, база података ће бити прекинута.
#
# Имајте на уму да се празни урези коментаришу
~

Обавезе су хронолошки наведене на врху од најранијих до најновијих. Можете одабрати коју обавезу да „одаберете“, а коју да сквоширате. Ради једноставности, ми ћемо одабрати први комитент, а остатак угурати у њега. Па ћемо изменити текст овако:

пицк 7а62538 Додато б.пи
сквош це9е582 б.пи Модификација 1
сквош дфц0295 б.пи Модификација 2
 
# Пребацујте 952244а… дфц0295 на 952244а (3 команде)
#
# Команде:
# п, пицк = користи предавање
# р, реворд = користи предавање, али уредите поруку урезивања
# е, едит = користи предавање, али зауставите се ради допуне
# с, скуасх = употреба урезивања, али спајање са претходним урезивањем
# ф, фикуп = попут "скуасх", али одбаци поруку дневника овог урезивања
# к, екец = команда за покретање (остатак реда) помоћу љуске
#
# Ове линије се могу преуредити; извршавају се од врха до дна.
#
# Ако овде уклоните линију, ТА ОБАВЕЗА ЋЕ СЕ ИЗГУБИТИ.
#
# Међутим, ако уклоните све, база података ће бити прекинута.
#
# Имајте на уму да се празни урези коментаришу

Чим сачувате и затворите текстуалну датотеку, требало би да се појави још један текстуални прозор који изгледа овако:

# Ово је комбинација 3 урезивања.
# Прва порука урезивања је:
Додато б.пи
 
# Ово је друга порука урезивања:
 
б.пи Модификација 1
 
# Ово је 3. порука урезивања:
 
б.пи Модификација 2
 
# Унесите поруку урезивања за ваше промене. Линије почињу
# са '#' ће се занемарити, а празна порука прекида урезивање.
#
# Датум: Пет Мар 30 21:09:43 2018 -0700
#
# поновна база података је у току; на 952244а
# Тренутно уређујете урезивање током поновног постављања гране 'мастер' на '952244а'.
#
# Измене које треба извршити:
# Нова датотека: б.пи
#

Сачувајте и затворите и ову датотеку. Требали бисте видети нешто овако:

$ гит ребасе -и ГЛАВА ~ 3
[одвојена ГЛАВА 0798991] Додато б.пи
Датум: Пет Мар 30 21:09:43 2018 -0700
1 датотека промењена, 1 уметање (+)
начин креирања 100644 б.пи
Успешно ребазиран и ажуриран рефс / хеадс / мастер.

Ако сада проверите историју урезивања:

$ гит лог --онелине --грапх --децорате
* 0798991 (ГЛАВА -> мастер) Додато б.пи
* 952244а Додато а.пи

Све обавезе за б.пи су згњечени у један комитет. Можете потврдити тако што ћете погледати б.пи датотека:

$ мачка б.пи
принт ("здраво БББ")

Садржај је Модификације 2.

Закључак

Пребаза је моћна команда. То вам може помоћи да своју историју одржавате чистом. Али избегавајте да га користите за већ јавне обавезе јер може изазвати сукобе и забуну. Користите га само за своје локално спремиште.

Даље истраживање:

ХД Ремастеред игре за Линук које никада раније нису имале Линук издање
Многи програмери и издавачи игара долазе са ХД ремастером старих игара како би продужили живот франшизе, молимо обожаваоце да захтевају компатибилност...
Како користити АутоКеи за аутоматизацију Линук игара
АутоКеи је услужни програм за аутоматизацију радне површине за Линук и Кс11, програмиран на Питхон 3, ГТК и Кт. Користећи његову скриптну и МАЦРО функ...
Како приказати бројач ФПС-а у Линук играма
Линук гаминг добио је велики потицај када је Валве најавио Линук подршку за Стеам клијент и њихове игре 2012. године. Од тада су многе ААА и индие игр...