Које су уобичајене Гит грешке и како их исправити?



Отклоните најчешће грешке приликом израде верзија вашег кода у алатки за систем издавања верзија гит и заштитите интегритет података.

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

Морам да признам, верзија мојих података у Гиту ми омогућава да будем експерименталнији у развоју свог пројекта. Ако забрљам, знам да гит увек може да поништи и / или врати ту верзију мог пројекта онаквом каква је била пре него што сам зезнуо. Свака слој је дизајниран да омогући преглед података, њихово преиспитивање и / или исправљање пре премештања података у следећој фази. Дакле, следеће су грешке о којима говори овај блог:





Датотеке / директоријуми без индекса из фазе

Док додајете и / или мењате датотеке, често користите уобичајено понашање команде „гит адд“, а то је додавање свих датотека и директорија у индекс.Често имате потребу да поједине датотеке уклоните из фазе или да их последњи пут измените пре него што их урежете.



Синтакса: гит ресет


уклањање датотека из индекса - уобичајене гит грешке -Едурека

Поништавање приказивања датотека из области Индекс даје вам још једну шансу за поновну обраду података пре предавања на локални репо.



Измените последњу уређену поруку

Команда: гит цоммит --аменд
Можете уредити најновију поруку урезивања без креирања нове. Да бих навео дневнике урезивања, поставио сам псеудоним „хист“:
Команда: гит цонфиг - глобални алиас.хист 'лог --претти = формат: '% Ц (жути)% х% Цресет% ад | % Ц (зелено)% с% Цресет% Ц (црвено)% д% Цресет% Ц (плаво) [% ан] '--грапх --децорате --дате = схорт'к


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

Заборавио сам неке промене у последњем урезивању

Рецимо да сте заборавили да извршите неке измене и већ сте снимили снимак, а такође не желите да направите још једно обавезивање да бисте истакли своју грешку.
Команда: гит цоммит --аменд


Истакао сам како је поновно створен и промењен сха-1 ИД недавног објекта урезивања. Претварао сам се да сам направио један комбиновање мешајући обе промене у једну.

Одбаците локалне промене

Дакле, ево случаја када сам модификовао датотеку ‘РЕАДМЕ’ и приредио је. Затим сам други пут изменио исту датотеку, али схватио сам да не желим другу промену.

Сада, дозволите ми да не опозивам целу промену ручно, могу једноставно повући инсценирану верзију датотеке.
Синтакса:
гит цхецкоут -–Локалне промене у датотеци
гит цхецкоут -–Локалне промене у свим датотекама у директоријуму & стидљиво и стидљиво

Команда: гит цхецкоут - РЕАДМЕ

Дакле, одбацио сам своје последње измене у датотеци и прихватио етапну верзију датотеке. У следећем урезивању, само постепена верзија датотеке иде у локално спремиште.

Предани лични подаци локалном спремишту

Желим да уклоним одређене податке из локалног спремишта, али да датотеке држим у радном директоријуму.
Синтакса:
гит ресет --микед ХЕАД ~
гит ресет --микед

Команда: гит ресет --микед ХЕАД ~ 1
ХЕАД ~ 1 означава урезивање непосредно пре недавног урезивања на које указује тренутна грана ХЕАД.

Датотеке у тренутном снимку уклоњене су и из локалног спремишта и из области за инсценацију. Додајте следеће обрасце у глобалну датотеку .гитигноре да бисте их изузели из праћења гита.
вим ~ / .гитигноре_глобал
# датотеке лозинке #
* .пролаз
* .кеи
* .пассвд

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

Опрез: Ако их изгубите, гит вам их неће моћи вратити јер не зна за то.

Замените најновије урезивање новим урезивањем

Синтакса: гит ресет --софт [/ ХЕАД ~ н>]

Опција ‘–софт’ само уклања урезане датотеке из локалног спремишта док су још увек постављене у индекс и можете их поново извршити након прегледа. је сха-1 снимка који желите да уклоните из локалног репо-а. где је н број предавања пре урезивања ХЕАД

Команда :гит ресет --софт ГЛАВА ~ 1


Измените датотеке и поново их поставите

дизајнирати обрасце у пхп-у са примером

Команда: гит цоммит -м 'Додавање индек.хтмл и стиле.цсс'
Испоставило се да је ваша историја урезивања:

Пренели су погрешне податке

Синтакса:
гит ресет --хард ХЕАД ~ н– Ресетујте пројекат на „н“ обавезује пре најновије снимљене слике
гит ресет --тешко– Ресетујте пројекат на дат снимак ид-а урезивања

Команда: гит ресет --хард ХЕАД ~ 1


Најновије датотеке урезивања и оштећења уклањају се из локалног спремишта, региона, као и из радног директорија.

Опрез: То је опасна команда јер на крају губите датотеке у радном директоријуму. Не препоручује се на удаљеном спремишту.

Врати се у моје старо стање пројекта

Можете да пређете на старије стање вашег пројекта у историји времена. Ако забрљате у најновијој верзији или вам требају побољшања старијег кода, можда ћете желети да направите још једну грану од тог старог снимка пројекта како не бисте ометали ваш тренутни рад. Да видимо како:
а. Наведите историју пројекта и одлучите за старији ИД урезивања, наредбу:иди ист
б. Направите другу грану од ИД-а урезивања:гит цхецкоут -б стара држава е7аа9а5
ц. Наставите да радите на коду и касније спојите / пребазујте са главном граном.

Обновите избрисану локалну грану

Могуће је обновити изгубљени рад на референтној грани. Рецимо, избрисао сам грану „стари_код“ без спајања са главном граном и изгубио рад. И не, ни грана нисам гурнуо у удаљено спремиште, шта онда? Па гит трагови и водите евиденцију свих промена извршених на свакој референци, да видимо моју:иди пререгиструј

Дакле, ХЕАД @ {2} је показивач када сам прешао на грану „стари_код“, опоравимо то:

Синтакса:гит цхецкоут -б
Команда:гит цхецкоут -б стари_код ХЕАД @ {2}

Морате бити у грани 'стари_код' са својим најновијим радом у тренутку његовог стварања. Поред тога, показивач 'рефлог' на ХЕАД @ {1} је недавно урезивање извршено на грани 'стари_код'. Да бисте обновили овај јединствени цоммит само покрените команду као:гит ресет --хард ХЕАД @ {1}.Ово такође враћа модификоване датотеке у радни директоријум.

Ако желите детаљно да знате како ова наредба функционише и како можете да управљате уносима „рефлог“, можете прочитати и мој ранији пост наопоравак избрисане гране из гит рефлог-а.

Опозови промене извршене у урезивању

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

Команда: гит реверт 827бц0д

Боље је да не ресетујете дељене завезе „тврдо“, већ их „гит реверт“ да бисте сачували историју тако да свима буде лакше да пронађу евиденције историје да би сазнали шта је ко вратио и зашто?

Можете користити исту логику упућивања урезивања која се тичу показивача ХЕАД, уместо давања ИД-а урезивања, као у ХЕАД ~ 3 или ХЕАД ~ 4 и тако даље.

Дао сам погрешно име мојој филијали

Можете да преименујете име локалне филијале. Много пута се догоди да можда пожелите да преименујете своју грану на основу проблема на којем радите, а да не прођете кроз муку због миграције целог посла са једне локације на другу. На пример, могли бисте бити на истој грани или на другој грани и даље моћи преименовати жељену грану како је приказано доле:
Синтакса: гит грана -м
Команда: гит бранцх -м олд_цоде олд_ # 4920

Као што се можда питате да ли гит води евиденцију о овом преименовању? Да, односи се на ваше уносе „рефлог“, ево мојих:

Преименовање гране неће утицати на њену грану за даљинско праћење. Видећемо у удаљеном одељку како заменити грану на удаљеном спремишту

пл скл туторијал за почетнике са примерима

Преуредите евиденције историје пре него што их пребаците на даљински

Како бих волео да сам неке обавезе извршио раније од других, а неке не бих уопште. Интерактивно преуређујте и уређујте старе обавезе како бисте ефикасно поправили или побољшали код
Синтакса: гит ребасе -и
Команда: гит ребасе -и фб0а90е–Почните са поновним подешавањем вредности урезивања извршених након ид-а урезивања фб0а90е

Поново посетите гит ребасе документацију да би се разумело како се разлика „–интерацтиве или -и“ разликује од уобичајене базе података.

Увезане неповезане промене у један комитет

У овом случају, требате подијелити стари закопани урезивање у више логичких предавања.
Синтакса: гит ребасе -и
Команда: гит ребасе -и фб0а90е
У уређивачу ребасеа морате да изаберете е7аа9а5 ид урезивања и промените га у „едит“ уместо „пицк“.

неповезане промене - уобичајене гит грешке -Едурека

Сада бисте били у пројектној верзији урезивања ид-е7аа9а5. Прво, ресетујте историју урезивања и место постављања на претходну наредбу урезивања:гит ресет ХЕАД ~ 1
Друго, едит + стаге + урезујте датотеке појединачно
Команде:
гит додај код && гит цоммит -м 'Додавање почетних кодова'
гит адд невцоде && гит цоммит -м 'Додавање новог кода'

Треће, наставите са базом података и завршите.

Команда :гит ребасе --наставити
Четврто, погледајте историју са додатним урезивањима.

Команда: иди ист

подела урезивања на више користећи ребасе - уобичајене гит грешке - Едурека

Промените имејл аутора у свим урезивањима на свим гранама

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

Прво добијем списак ид-ови е-поште да одлучим оне које желим да променим:
Команда: гит лог --алл --претти = формат: '% ан% д'–Ово исписује име аутора (рефнаме / име гране)

Друго, пролазим свако урезивање на свакој грани и поново напишите објект урезивања са новим ИД-ом е-поште
Команда:
гит филтер-грана - енв-филтер '
иф ['$ ГИТ_АУТХОР_НАМЕ' = 'дивиа']
онда
ГИТ_АУТХОР_ЕМАИЛ = 'дивиа@гитхуб.цом'
бити
' -- --све

Изгубљене и пронађене датотеке

Претпоставимо да сте изгубили одређену датотеку и не сећате се њеног имена, али бисте могли да се сетите одређених речи у датотеци. У овом случају можете следити ове кораке-
Корак 1: Наведите све урезе који су икада садржали снимак датотеке са претраживаним узорком
Команда :гит рев-лист --све | каргс гит греп -и 'временска ознака'



Корак 2 : Направите нову грану „изгубљено-пронађено“ од овог истакнутог ид-а урезивања
Синтакса: гит цхецкоут -б изгубљено-пронађено д8ц6а76а6дцб1фц6е8ц3ф6б097е1бд07е7цд328ф

Заборавио сам у којој грани постоји мој цоммит-ид

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

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

Дакле, сада знам све гране које још увек имају лоше урезивање, могао бих да вратим или ресетујем овај скуп промена.

Избришите урезивање из историје

Понекад осећам потребу да само избришем обавезу из историје и не оставим јој траг. Не бих вам препоручио да испробате овај трик на заједничкој грани, већ само на локалној филијали.
Синтакса: гит ребасе -и
Команда :гит ребасе -и 93859д8
У уређивачу ребасе-> замените 'едит' са 'дроп' за истакнути ид урезивања: 69ф4813

алати који се користе у аналитици великих података

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

Упозорење : Ово је опасна наредба јер ово преписује историју и може изгубити податке. Таква се грана разликује од свог удаљеног колеге и мораће се притиснути са--силаили- присила уз закупопција.

Гурнуо погрешну грану на даљински

Сада, ево шта желим да урадим - желим да избришем а удаљена грана а такође престати да га пратите из моје локалне филијале. “гит пусх‘Наредба када се користи са--избришиопција брише удаљену грану Дакле, овако добијам локалну копију клонираног пројекта -

гит клон хттпс://гитхуб.цом/греетс/миПрој.гит
цд миПрој


Једном када се удаљена грана избрише, други на дељеном репо-у морају освежити и ажурирати своје удаљене референце помоћу- орезатимогућност брисања референци на објекте који недостају:гит фетцх --пруне -в порекло

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

Сад кад сте разумели уобичајене Гит грешке, погледајте ово Едурека, поуздана компанија за учење на мрежи са мрежом од више од 250.000 задовољних ученика раширених широм света. Едурека ДевОпс сертификациони курс помаже ученицима да разумеју шта је ДевОпс и стекну стручност у различитим ДевОпс процесима и алатима као што су Пуппет, Јенкинс, Нагиос, Ансибле, Цхеф, Салтстацк и ГИТ за аутоматизацију више корака у СДЛЦ-у.

Имате питање за нас? Молимо вас да га спомињете у одељку за коментаре ове „уобичајене Гит грешке“ и јавићемо вам се