logo

Hur man ångrar senaste commit

Som mjukvaruingenjör eller webbutvecklare kan vi behöva pusha många commits till vårt Git-förråd.

Det finns dock några andra fall där vi vill commitera filerna som inte kommer att skickas till vårt Git-förråd. Innan vi utfärdar något åtagande kan vi ibland vilja implementera några ytterligare ändringar.

Som en effekt måste vi ångra den senaste commit genom vårt Git-förråd. Vi kommer att se hur vi kan ångra den sista commit i detta ämne.

Ångra Last Git Commit tillsammans med en återställning

Vi kan enkelt ångra den sista git commit genom att utföra kommandot, dvs. 'git reset' tillsammans med ett alternativ, dvs. '-mjuk' som kommer att skydda alla ändringar som görs i våra filer. Vi måste beskriva åtagandet att ångra som är 'HEAD~1'.

Den sista commit av git kommer att raderas från vårt Git-förråd.

 $ git reset --soft HEAD~1 

I denna notation,

'HEAD~1': Det betyder att vi vill återställa detta HEAD till en enda commit innan loggens historia.

år datorn uppfanns
 $ git log --oneline 3fad532 Last commit (HEAD) 3bnaj03 Commit before HEAD (HEAD~1) Vcn3ed5 Two commits before HEAD (HEAD~2) 

Vad blir effekten av kommandot ovan?

Kommandot, dvs. 'git reset' kan ses som ett kommando, det vill säga motsatsen till 'git add' , i huvudsak att infoga filer i Git-indexet.

Om du beskriver alternativet för '-mjuk' , Git kommer inte att ändra filerna i indexet eller den körande katalogen alls.

Till exempel har vi inkluderat två filer i vår senaste commit, även om vi vill implementera några ändringar i den här filen.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 Second commit *7083e29 Initial repository commit 

Som ett resultat kommer vi att ansöka 'git reset' tillsammans med möjligheten att '-mjuk' att ångra den senaste commit och även implementera några ytterligare ändringar.

 $ git reset --soft HEAD~1 $ git status 

Över grenmästaren

Vår filial är master/origin ahead genom commit 1 (använd 'git push' för att publicera våra lokala commits).

c# lista

Ändringar som ska genomföras:

 (apply 'git restore --staged …' to unstage) 

ny fil: fil1

 $ git log --oneline --graph *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Som vi kan se finns filen fortfarande i indexet genom att ångra den senaste commit (ändringar som ska begås) även om commit raderades.

Vi har gjort den sista commit på vårt arkiv framgångsrikt.

Hård återställ Git commit

Vi kan överväga i avsnittet ovan att vi enkelt kan ångra den senaste commit och bevara ändringarna gjort till vilken fil som helst i indexet. Men i vissa situationer vill vi helt enkelt ta bort ändringarna och åtaganden som gjorts för alla filer.

Det är ett mål för ett alternativ, dvs. '-hård' .

fötter vs fot

För att ångra den senaste commit och ta bort alla ändringar i indexet och katalogen, kör ett kommando, dvs. 'git reset' tillsammans med alternativet, dvs. '-hård' och beskriv en commit före kommandot HEAD ('HEAD~1') .

 $ git reset --hard HEAD~1 

Varje commit och modifiering kommer att tas bort från indexet och katalogen efter att ha använt '--hård' kommando. Så vi bör vara försiktiga.

Till exempel har vi lagt alla nya filer med namnet 'file1' till vårt Git-förråd.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Antag nu att vi vill ångra den senaste commit och ta bort varje ändring.

 $ git reset --hard HEAD~1 

Nu är HEAD på 90f8bb1 Second commit

Låt oss nu kolla vårt git-förrådstillstånd.

 $ git status 

Över grenmästaren

Vår gren är modern med master/origin (använd 'git push'-kommandot för att publicera våra lokala commits).

string.valueof

Nu finns det inget att begå, och arbetsträdet är rent.

Mixed Reset Git commit

Behåll ändringen i vår arbetskatalog, dock INTE i indexet. Vi måste tillämpa kommandot, dvs ., 'git reset' tillsammans med alternativet, dvs. '-blandad' . Efter detta kommando måste vi lägga till 'HEAD~1' helt enkelt till den sista commit.

 $ git reset --mixed HEAD~1 

Till exempel har vi inkluderat alla filer med namnet 'file1' i alla commit som vi måste ångra.

 $ git log --oneline --graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Helt enkelt kör vi kommandot, dvs. 'git reset' tillsammans med alternativet, dvs. '-blandad' för att ångra den senaste commit.

Som ett resultat av detta '-blandad' kommandot är a 'blanda' bland hård och mjuk återställning, så dess namn.

Över grenmästaren

Vår filial är master/origin ahead genom commit 1 (använd 'git push' för att publicera våra lokala commits).

Ospårade filer: (använd 'git add ...' för att lägga till i det som kommer att begå)

 file1 

Inget ingår för commit men de ospårade filerna finns (använd 'git track' för spårning).

Så vi har upptäckt en annan praxis för att återställa den senaste commit genom att bevara ändringar som gjorts i filerna.

Ångra Last Commit tillsammans med återställ

Använd kommandot, dvs. 'git återgå' och beskriv ett åtagande som ska återkallas, dvs. 'HUVUD' till historiens commit för att återställa den senaste Git-commiten.

 $ git revert HEAD 

Kommandot 'git revert' är annorlunda jämfört med kommandot 'git reset' eftersom det kan spela in vilken ny commit som helst tillsammans med några modifieringar som definieras genom att degenerera den senaste commit.

Vi kan beskriva 'HEAD~1' med kommandot 'git reset' eftersom detta återställningskommando kommer att ställa in vilken ny HEAD-plats som helst samtidigt som den beskrivna commit degenereras.

Som ett resultat kommer vi att befästa ändringarna igen i vissa filer för att återställas och förbinda oss att inte utföras. Vi har skapat vilken ny fil som helst för vårt arkiv av Git men vi vill degenerera denna commit.

ram skådespelare
 $ git log --oneline -graph *b734307 (HEAD -> master) Added a new file named 'file1' *90f8bb1 (Head -> master) Second commit *7083e29 Initial repository commit 

Om du kör kommandot 'git revert' kommer Git att öppna vår textredigerare för att utföra ändringarna automatiskt.

Hur man ångrar senaste commit

Ett nytt meddelande visas tillsammans med en ny commit-hash när vi är klara med att köra ett commit-meddelande.

 [master 2d40a2c] Revert 'Added a new file named as file1' 1 file changed, 1 deletion(-) delete mode 100644 file1 

Om vi ​​måste kontrollera vår Git-historik igen, kan vi märka att en ny commit lagts till för att ångra den senaste commit genom vårt arkiv.

 $ git log --oneline --graph *2d40a2c (HEAD -> master) Revert 'Added a new file named file1' *1fa26e9 Added a new file named as file1 *ee8b133 Second commit *a3bdedf Initial commit