Oefening: Git gebruiken om fouten op te lossen

Voltooid

Laten we nu wat praktische oefening krijgen om onze fouten te corrigeren.

Oefenen met het herstellen van een verwijderd bestand

  1. Verwijder eerst index.html:

    rm index.html
    

    Het lijkt misschien een slecht idee, maar vergeet niet: Git heeft je rug!

  2. Gebruik de opdracht ls om te controleren of index.html is verwijderd:

    ls
    
  3. De volgende uitvoer wordt weergegeven. Houd er rekening mee dat er nu geen index.html-bestand is.

    CSS
    
  4. Laten we index.html herstellen. Gebruiken git checkout om index.html terug te halen:

    git checkout -- index.html
    
  5. 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 rmvan .

  1. Probeer deze opdracht om te zien wat er gebeurt:

    git rm index.html
    
  2. Zoek opnieuw naar index.html door uit te voeren ls. Index.html wordt niet weergegeven.

  3. Probeer index.html op dezelfde manier te herstellen als de laatste keer:

    git checkout -- index.html
    
  4. 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.
    
  5. Maak de verwijdering van index.html ongedaan met de opdracht git reset:

    git reset HEAD index.html
    
  6. Controleer op deze uitvoer, waarmee wordt bevestigd:

    Unstaged changes after reset:
    D       index.html
    
  7. 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 dus checkout gebruiken om het bestand terug te halen.

  8. 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.

  1. Open index.html met code:

    code index.html
    
  2. Vervang de inhoud van index.html door deze code:

    <h1>That was a mistake!</h1>
    
  3. Sla het bestand op en sluit het bestand.

  4. 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.

  5. Gebruik de volgende opdrachten om index.html te herstellen:

    git checkout -- index.html
    
  6. 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.

  7. 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.

  8. 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(-)
    
  9. Ga verder met een git log-opdracht om de nieuwste doorvoering weer te geven:

    git log -n1
    
  10. 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.
    
  11. 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.