Oefening: Git gebruiken om fouten op te lossen
Laten we nu wat praktische oefening krijgen om onze fouten te corrigeren.
Oefenen met het herstellen van een verwijderd bestand
Verwijder eerst index.html:
rm index.html
Het lijkt misschien een slecht idee, maar vergeet niet: Git heeft je rug!
Gebruik de opdracht
ls
om te controleren of index.html is verwijderd:ls
De volgende uitvoer wordt weergegeven. Houd er rekening mee dat er nu geen index.html-bestand is.
CSS
Laten we index.html herstellen. Gebruiken
git checkout
om index.html terug te halen:git checkout -- index.html
Gebruik
ls
opnieuw om de inhoud van de huidige map te controleren. Is index.html hersteld?Ja. De uitvoer moet nu een index.html-bestand en een CSS-map hebben:
CSS index.html
Oefen met het herstellen van een bestand dat is verwijderd: git rm
Wanneer u verwijderde bestanden wilt herstellen, zijn de dingen iets ingewikkelder als u ze verwijdert met behulp git rm
van in plaats van met behulp rm
van .
Probeer deze opdracht om te zien wat er gebeurt:
git rm index.html
Zoek opnieuw naar index.html door uit te voeren
ls
. Index.html wordt niet weergegeven.Probeer index.html op dezelfde manier te herstellen als de laatste keer:
git checkout -- index.html
Deze keer geeft Git aan dat er geen informatie is over index.html. Dat komt doordat Git niet alleen het bestand heeft verwijderd, maar ook de verwijdering in de index heeft vastgelegd:
error: pathspec 'index.html' did not match any file(s) known to git.
Maak de verwijdering van index.html ongedaan met de opdracht
git reset
:git reset HEAD index.html
Controleer op deze uitvoer, waarmee wordt bevestigd:
Unstaged changes after reset: D index.html
U kunt het bestand nu herstellen uit de index met de opdracht die u eerder hebt gebruikt:
git checkout -- index.html
Met
git reset
is de wijziging ongedaan gemaakt, maar het bestand is nog steeds verwijderd; u moest duscheckout
gebruiken om het bestand terug te halen.Controleer of het werkt door uit te voeren
ls
.
Een doorvoering terugzetten
Laten we het nu ingewikkelder maken. Stel dat u het ene bestand per ongeluk overschrijft met een ander bestand of dat u een wijziging aanbrengt in een bestand dat een grote fout blijkt te zijn. U wilt het bestand terugzetten naar de vorige versie van het bestand, maar u had de wijzigingen al doorgevoerd. In dit geval doet een eenvoudige git checkout
truc niet.
Eén manier om dit probleem op te lossen, is om de vorige doorvoering terug te zetten.
Open index.html met
code
:code index.html
Vervang de inhoud van index.html door deze code:
<h1>That was a mistake!</h1>
Sla het bestand op en sluit het bestand.
Gebruik deze opdrachten om de wijzigingen door te voeren en de nieuwste doorvoering weer te geven:
git commit -m "Purposely overwrite the contents of index.html" index.html git log -n1
De
-n1
vlag hier vertelt Git dat we alleen de meest recente doorvoervermelding willen.Gebruik de volgende opdrachten om index.html te herstellen:
git checkout -- index.html
Open index.html in de editor:
code index.html
Welke versie van index.html ziet u? De oude versie of de nieuwe versie?
In deze situatie kunt u de wijziging het beste terugzetten door nog een doorvoering te maken waarmee de eerste doorvoering wordt geannuleerd. Dat is een taak voor
git revert
.Sluit het bestand en gebruik
git revert
om uw doorvoeringen ongedaan te maken:git revert --no-edit HEAD
De
--no-edit
vlag vertelt Git dat we geen doorvoerbericht voor deze actie willen toevoegen.Controleer de uitvoer. Het moet er ongeveer uitzien als in dit voorbeeld:
[main 6a27310] Revert "Purposely overwrite the contents of index.html" 1 file changed, 13 insertions(+), 1 deletion(-)
Ga verder met een
git log
-opdracht om de nieuwste doorvoering weer te geven:git log -n1
Controleer de uitvoer opnieuw. Dit moet er als volgt uitzien:
Author: User Name <user-name@contoso.com> Date: Tue Nov 19 23:42:26 2019 +0000 Revert "Purposely overwrite the contents of index.html" This reverts commit 15d3bded388470c98881a632025bc15190fe9d17.
Open ten slotte het bestand index.html om ervoor te zorgen dat de inhoud de juiste versie is.
Terugdraaien is niet de enige manier om deze situatie te verhelpen; u kunt index.html bewerken en het gecorrigeerde bestand doorvoeren. Deze optie is moeilijker als de wijzigingen die u hebt doorgevoerd uitgebreid waren. In ieder geval git revert
is het een goede manier om uw intentie te signaleren.