Als software voor versiebeheer maakt Git het voorspelbaar eenvoudig om wijzigingen terug te draaien. Maar zelfs het concept van het ongedaan maken van een wijziging is ingewikkelder dan je in eerste instantie zou denken. Een Git-repository is niet helemaal hetzelfde als de set bestanden waar je lokaal aan werkt. Wijzigingen ongedaan maken betekent dat u precies moet nadenken waar u ze ongedaan wilt maken.
gituitchecken, git reset, en githerstellen zijn commando's die je kunnen helpen terug te keren naar een vorige versie, niet alleen van je codebase, maar ook van individuele bestanden. Leer de details van deze opdrachten kennen en u zult in een mum van tijd als een expert door uw bestandsgeschiedenis springen.
Wat betekent het opnieuw instellen van een bestand eigenlijk?
Het is belangrijk op te merken dat het opnieuw instellen van een bestand onder verschillende omstandigheden voor verschillende mensen verschillende dingen kan betekenen. Ook de git reset commando komt mogelijk niet overeen met uw verwachtingen voor wat resetten betekent.
Soms wil je lokale wijzigingen ongedaan maken, zodat een bestand weer synchroon loopt met de huidige repository. In andere gevallen wil je misschien wijzigingen die je al aan de repository hebt vastgelegd ongedaan maken.
De volgende termen zijn essentieel om het verschil te begrijpen: werkboom, staging area en repository. De bestanden die u lokaal bewerkt, behoren tot de werkboom. Bestanden die je commit komen uiteindelijk in de repository terecht. Wanneer u bezig bent met het verzamelen van wijzigingen, ensceneert u bestanden. Een bestand kan op elk van deze locaties een andere inhoud hebben.
Zie ook: Geavanceerde Git-zelfstudie
U kunt denken aan het resetten van een bestand als het ongedaan maken van wijzigingen. Maar de status van uw bestand bepaalt welke wijzigingen u daadwerkelijk ongedaan maakt. Het voor de hand liggende geval is wanneer u enkele wijzigingen aanbrengt, ze vastlegt en later besluit dat u ze niet meer wilt.
Een ander geval kan zijn dat u een bestand hebt gestaged en het nu wilt opheffen.
Hoe kan ik een eerder vastgelegd bestand terugdraaien?
Laten we een zaak behandelen die gemakkelijker te begrijpen is: u hebt een bestand vastgelegd en nu wilt u de wijzigingen erin terugdraaien.
Het Git-commando om dit te doen heet, enigszins onintuïtief, uitchecken. Je hebt misschien gebruikt uitchecken eerder om van branch te wisselen, maar dat is een klein deel van wat het commando kan doen. Het stelt u ook in staat om bestanden in uw werkboom bij te werken zodat ze overeenkomen met die op elk punt in de geschiedenis van de repository. Je kunt dit doen voor een specifieke tag, branch of zelfs een bepaalde commit.
De meest bruikbare, algemene vorm van deze opdracht is:
git checkout [commit ID] -- pad/naar/bestand
Hier passeren we een specifiek pad (pad/naar/bestand) dat slechts een enkel bestand identificeert. We specificeren ook een commit-ID om het bestand te krijgen zoals het bestond bij die specifieke commit. Met deze opdracht wordt het bestand alleen in onze werkboom bijgewerkt.
Merk op dat het uitchecken van een eerdere versie van het bestand de werkkopie wijzigt, zonder deze vast te leggen of zelfs maar te ensceneren. Om het ongedaan maken van de repository volledig te voltooien, moet je het bestand stagen en een nieuwe commit maken.
Zie ook: Hoe de geschiedenis van een project te inspecteren met git log
Hoe verander ik wat ik ensceneer?
Het andere type ongedaan maken betreft uw verzamelgebied. Dit bevat de wijzigingen die u naast de repository gaat uitvoeren. Als je een versie van een bestand hebt gestaged en later besluit dat je het niet in de volgende commit wilt opnemen, moet je het eerst unstagen.
U kunt de git reset commando om een gefaseerd bestand uit de stage te halen:
git reset HEAD pad/naar/bestand
Kan ik lokale wijzigingen snel ongedaan maken?
Ja, u kunt wijzigingen aan een lokaal bestand ongedaan maken voordat het wordt gestaged. Gebruik de volgende opdracht:
git checkout -- pad/naar/bestand
Merk op dat dit vergelijkbaar is met het terugdraaien van een repository-wijziging, het laat alleen de commit-ID weg. Zodra je dit commando uitvoert, zal Git alle wijzigingen aan je werkkopie ongedaan maken.
Hoe zit het met git restore?
Latere versies van Git hebben een nieuwere opdracht: herstellen. Voor de eenvoudige gevallen die we hier hebben besproken, kunt u de volgende equivalenten gebruiken. Een wijziging in de repository ongedaan maken:
git restore --source [commit id] pad/naar/bestand
Om een bestand te unstagen, gebruikt u:
git restore --staged pad/naar/bestand
En om werkkopie wijzigingen ongedaan te maken:
git herstel pad/naar/bestand
De versiekracht van Git beheersen is van onschatbare waarde
Hoewel het resetten van een bestand misschien gebruikelijk lijkt, zult u merken dat het in de praktijk vrij zelden voorkomt. Het is waarschijnlijker dat je volledige commits terugdraait in plaats van individuele bestanden. Echter, in de gevallen dat je dit toch moet doen, maakt Git het in ieder geval redelijk eenvoudig.
Gebruik deze Git-commando's om bewerkingen uit te voeren, zoals het verwijderen van een bestand uit een commit.
Lees volgende
- Programmeren
- GitHub
- Webontwikkeling
- Programmeren
Bobby is een technologie-enthousiasteling die bijna twee decennia als softwareontwikkelaar heeft gewerkt. Hij is gepassioneerd door gaming, werkt als hoofdredacteur bij Switch Player Magazine en is ondergedompeld in alle aspecten van online publiceren en webontwikkeling.
Abonneer op onze nieuwsbrief
Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!
Klik hier om je te abonneren