Så här återställer du återställda åtaganden i ett Git-arkiv

Om du bara har återställt ett Git-engagemang och av misstag raderat en fil eller kod på grund av det, oroa dig inte. Git håller reda på allt och att återställa den återställda filen är lätt att göra både från kommandoraden och de flesta GUI Git-klienter.

Inte & # 8217; t Panik

Lyckligtvis håller Git koll på allt, även återförda åtaganden. Du har inte tagit bort någonting än.

Du kanske har stött på detta när du försökte & # 8220; ta bort & # 8221; a Git commit. Du kan dock inte ta bort åtaganden när du gör dem. Du kan bara återställa till ett tidigare åtagande och ignorera de lokala ändringarna eller återställa ändringarna.

Till exempel, i mitt fall med detta problem, hade jag precis initierat mitt Git-arkiv och av misstag iscensatt allt utan att skriva min .gitignore-fil, som begick ./bin/-mappar och annat skräp som jag inte ville ha. Så utan att tänka på det klickade jag på & # 8220; återställ & # 8221; i min Git-klient och såg med skräck när hela min katalog blev borttagen. Hoppsan.

Problemet är att & # 8220; återvändande & # 8221; ett engagemang är inte detsamma som att avstänga ändringarna och kan ha oväntade effekter på dina lokala filer som bara kan fixas genom Git. Detta ser ut som ett allvarligt problem tills du inser att all information fortfarande är lagrad i .git/mappen i ditt arkiv, så att den kan återställas.

Annons

Det hjälper inte att det heter konstigt, och det faktiska sättet att ta bort ett oönskat åtagande är att göra en & # 8220; mjuk återställning & # 8221; tillbaka till det sista åtagandet bakom HEAD. Så nästa gång, om du vill ångra ett åtagande (för att redigera dina ändringar och göra det igen), använd följande kommando:

git reset HEAD ~ 1

För att klargöra & # 8212; inte en & # 8220; hård & # 8221; reset, vilket också tar bort alla dina lokala ändringar.

Åtgärda återställda åtaganden

Korrigeringen är ganska enkel. När du gör en & # 8220; git-återställning, & # 8221; Git gör ett nytt åtagande med motsatta förändringar av åtagandet som återställs. Om du skapade en fil tas den filen bort och engagemanget återspeglar det.

Korrigeringen är att tillämpa det återvändande åtagandet och sedan återställa det, vilket kommer att återställa ändringarna. Detta kommer att fungera även om återupptagningsförpliktelsen inte ligger i förvaret. annars skulle en hård återställning också fungera och frigöra ditt repo från pinsamt & # 8220; återgå & # 8221; och & # 8220; återvända & # 8221; förbinder sig att dina kollegor kommer att skratta åt.

För att hitta hash för engagemanget kan du köra git-logg:

Kopiera denna hash och kör sedan git revert:

git revert 62ff517cc7c358eaf0bffdebbbe1b38dea92ba0f

Detta bör fixa förvaret, men du kan behöva begå återställ manuellt om det automatiska åtagandet misslyckades.

Annons

I de flesta GUI Git-klienter är processen extremt enkel. Klicka bara på & # 8220; återställ & # 8221; på åtagandet.

Återvända utan spår

Om du står i huvudet på ditt engagemangsträd och du vill göra det utan att göra nya åtaganden och du inte har gjort det ; t tryckte ändringen ännu, du kan hårt återställa din lokala filial till det gamla engagemanget.

git reset –hard HEAD ^

Anledningen till att detta måste vara en hård återställning är att en mjuk återställning fortfarande skulle inkludera de ostadierade ändringarna från återställningen. Du vill återställa utan de lokala ändringarna.

Du kan också mjukt återställa och kasta de lokala ändringarna manuellt.


Posted

in

by

Tags: