Huis Studie Afzonderlijke bestanden en mappen terugdraaien in Git

Afzonderlijke bestanden en mappen terugdraaien in Git

door Frank
Afzonderlijke bestanden en mappen terugdraaien in Git

Invoering

Git is een uitstekende tool voor het onderhouden van elke versie van je codebase, en het is soms nodig om terug in de tijd te gaan en oudere versies van bestanden te herstellen. Git kan wijzigingen terugdraaien naar een enkel bestand of map, evenals volledige commits intrekken of de hele repository resetten.

Kiezen tussen terugzetten en resetten

Wanneer je een commit "terugzet", past Git meestal een nieuwe commit toe met de tegenovergestelde wijzigingen, waardoor het in wezen wordt geannuleerd. Dit is handig als je een fout maakt en een commit moet "verwijderen", zelfs als deze in de geschiedenis blijft.

De procedure voor het resetten van de repository is enigszins anders. Je mag slechts één commit tegelijk intrekken, maar als je een git reset uitvoert, zal Git de repository volledig resetten naar toen die commit werd gemaakt. Dit wordt gedaan om verschillende redenen, waarvan de meest voorkomende het wissen van commits of het corrigeren van de branch-geschiedenis is.

Beide procedures zijn van invloed op de hele repository, maar identieke opdrachten kunnen worden gebruikt om dezelfde effecten op afzonderlijke bestanden of mappen te bereiken. Bijvoorbeeld, het uitvoeren van git reset op een enkele bestand zou het herstellen naar de staat waarin het zich bevond toen de commit werd gemaakt. Dit is handig als je gewoon een oudere versie van het bestand uit je Git-geschiedenis wilt kiezen.

Oude Git-versies onderzoeken

The low-tech approach to restoring a file to its original state is rather simple—Github and most other Git servers maintain track of your file history, and you can simply click on a commit and choose “Browse Files” to see a snapshot of your repository from the past. You may then either download het bestand of kopieer de tekst.

Dit is vooral handig als je met een groot aantal codebestanden werkt en eerdere versies van routines die je hebt geschreven wilt vergelijken. In dat scenario wil je waarschijnlijk niet het hele ding omkeren, alleen die ene functie. Zonder de Git CLI aan te raken, kunt u de code van die functie kopiëren.

Een Git-bestand terugzetten naar een oude versie

We hebben een commit gemaakt in deze testrepository die de README heeft gewijzigd en een nieuw bestand heeft toegevoegd. We willen de README-aanpassingen ongedaan maken, maar we willen niet de hele repo terugzetten naar de eerste commit.

Het antwoord is om alleen de README opnieuw in te stellen door een oudere versie van dat bestand te downloaden. Het checkout-commando van Git kan verschillende dingen bereiken, zoals het wisselen van branches, hoewel het vaak wordt gebruikt om gegevens te downloaden op basis van een commit of branch-ID.

Om een bestand te herstellen naar een eerdere versie, zoek je de commit ID van wanneer je het wilt herstellen. Je kunt git log gebruiken met een enkel bestand in het bereik om alleen de wijzigingen te zien die in dat bestand zijn gemaakt:

git log README.md

Kopieer de commit ID, voer dan git checkout uit met de ID en het bestandspad:

git checkout 22710694b25d7ce5297559851beb7d3e4de811bb README.md

Dit zal het bestand terug wijzigen, maar het zal de wijzigingen nog niet vastleggen. U bent vrij om wijzigingen aan te brengen en vast te leggen wanneer u er klaar voor bent.

In dit geval heeft git checkout de wijzigingen gemarkeerd als gereed voor de volgende commit. Als u de wijzigingen niet wilt vastleggen, kunt u dat doen. Dit kan handig zijn voor het tijdelijk downloaden van oudere versies van bestanden zonder Github te gebruiken.

Wijzigingen in individuele bestanden terugzetten

Op dezelfde manier kun je git revert gebruiken om de wijzigingen die in een enkele commit zijn gemaakt ongedaan te maken. Er is geen manier om het toe te passen op een enkel bestand, maar als de vastlegging gevolgen heeft voor andere bestanden, verwerp dan gewoon de wijzigingen.

Use the —no-commit switch to enable modification of the “revert commit” that Git generates automatically.

git revert de8564b131ca6a15a7e7c73f5ef156b119cc0b93

Hierdoor kunt u wijzigingen aanbrengen in de bestanden voordat u de terugboeking voltooit. Als er ongewenste wijzigingen zijn die zijn gestaged, kunt u deze wissen met uw client of een lege git checkout.

git checkout -- bestand

Dit vind je misschien ook leuk

Navhow is toegewijd om mensen over de hele wereld te leren hoe ze iets moeten doen.

 

Abonneren

De beste how-to-nieuwsbrief overal

©2020 Navhow, Alle rechten voorbehouden