Een Specifieke Commit Terugdraaien
git revert
Zoals eerder vermeld, wordt het commando git revert
gebruikt om een specifieke commit terug te draaien. Dit commando maakt een nieuwe commit aan die de wijzigingen van de opgegeven commit ongedaan maakt. De basis-syntaxis is als volgt:
git revert <commit-hash>
Zoals te zien is, moet in plaats van HEAD (zoals bij het terugdraaien van de laatste commit), nu de hash van een specifieke commit (commit-ID) worden opgegeven die ongedaan gemaakt moet worden (vervang <commit-hash>
door een geldige hash).
Meer over Hashes
Onthoud dat elke commit een unieke ID heeft, die in feite een tekenreeks is van cijfers (0-9) en letters (a-f), een hexadecimale tekenreeks. Deze tekenreeks van 40 tekens wordt een hash genoemd. Laten we naar onze laatste commit kijken:
Hier is de hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Je zult een andere hash voor deze commit hebben om de hieronder uitgelegde reden.
De commit-hash wordt berekend met behulp van het SHA-1 algoritme op basis van de volgende informatie:
- Commitbericht;
- Datum;
- Auteur;
- Snapshot van de working tree;
- Hash van de oudercommit (of commits wanneer er meer dan één ouder is).
Als de commit de eerste in de repository is, wordt de hash van de oudercommit blijkbaar niet berekend.
Aangezien al deze commitinformatie wordt gebruikt voor het berekenen van de hash, zorgt het gebruik van hashes als commit-ID's voor de consistentie van de repository. Bovendien is de kans dat twee verschillende commits dezelfde hash hebben (de kans op een botsing) uiterst klein, dus het is zeer onwaarschijnlijk dat dit toevallig gebeurt.
In feite zal, als er iets in de commit verandert, de hash ook veranderen. Dit betekent dat als de gegevens om welke reden dan ook beschadigd raken, Git de hash kan gebruiken om dit te identificeren.
Bij het aanpassen van een commit verandert de commit-ID, daarom is het beter om het commando git commit --amend
niet te gebruiken wanneer er met externe repositories wordt gewerkt.
Voorbeeldworkflow
Voordat we bepalen welke commit we willen terugdraaien, bekijken we eerst de vier laatste commits:
We zien dat er een commit is waarin het bestand recipe.txt
is toegevoegd. Laten we deze commit terugdraaien door een nieuwe commit te maken die deze wijzigingen ongedaan maakt en het bestand feitelijk verwijdert. In mijn geval is de hash als volgt:
043b634d76a7a7744757350512b6367417c29e0
Jouw hash voor deze commit zal echter anders zijn. We kunnen nu deze commit terugdraaien:
Vervang deze hash door jouw hash.
Opnieuw wordt de standaardteksteditor geopend met het standaard commitbericht voor het terugdraaien. We laten dit ongewijzigd.
Vervolgens sluiten we de teksteditor op de juiste manier en tonen we de wijzigingen die in deze laatste commit zijn aangebracht:
7 verwijderingen hebben plaatsgevonden, wat betekent dat alle 7 regels van het bestand zijn verwijderd. Laten we nu verifiëren dat het bestand zelf is verwijderd door alle niet-verborgen bestanden en mappen in onze projectmap weer te geven:
Het bestand recipe.txt
is succesvol verwijderd.
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
What happens if I revert a commit that is not the latest one?
Can I revert multiple commits at once?
What should I do if I get a merge conflict during revert?
Awesome!
Completion rate improved to 3.57
Een Specifieke Commit Terugdraaien
Veeg om het menu te tonen
git revert
Zoals eerder vermeld, wordt het commando git revert
gebruikt om een specifieke commit terug te draaien. Dit commando maakt een nieuwe commit aan die de wijzigingen van de opgegeven commit ongedaan maakt. De basis-syntaxis is als volgt:
git revert <commit-hash>
Zoals te zien is, moet in plaats van HEAD (zoals bij het terugdraaien van de laatste commit), nu de hash van een specifieke commit (commit-ID) worden opgegeven die ongedaan gemaakt moet worden (vervang <commit-hash>
door een geldige hash).
Meer over Hashes
Onthoud dat elke commit een unieke ID heeft, die in feite een tekenreeks is van cijfers (0-9) en letters (a-f), een hexadecimale tekenreeks. Deze tekenreeks van 40 tekens wordt een hash genoemd. Laten we naar onze laatste commit kijken:
Hier is de hash:
1b00736255dca7d78659a9971d0c30fba0eb3075
Je zult een andere hash voor deze commit hebben om de hieronder uitgelegde reden.
De commit-hash wordt berekend met behulp van het SHA-1 algoritme op basis van de volgende informatie:
- Commitbericht;
- Datum;
- Auteur;
- Snapshot van de working tree;
- Hash van de oudercommit (of commits wanneer er meer dan één ouder is).
Als de commit de eerste in de repository is, wordt de hash van de oudercommit blijkbaar niet berekend.
Aangezien al deze commitinformatie wordt gebruikt voor het berekenen van de hash, zorgt het gebruik van hashes als commit-ID's voor de consistentie van de repository. Bovendien is de kans dat twee verschillende commits dezelfde hash hebben (de kans op een botsing) uiterst klein, dus het is zeer onwaarschijnlijk dat dit toevallig gebeurt.
In feite zal, als er iets in de commit verandert, de hash ook veranderen. Dit betekent dat als de gegevens om welke reden dan ook beschadigd raken, Git de hash kan gebruiken om dit te identificeren.
Bij het aanpassen van een commit verandert de commit-ID, daarom is het beter om het commando git commit --amend
niet te gebruiken wanneer er met externe repositories wordt gewerkt.
Voorbeeldworkflow
Voordat we bepalen welke commit we willen terugdraaien, bekijken we eerst de vier laatste commits:
We zien dat er een commit is waarin het bestand recipe.txt
is toegevoegd. Laten we deze commit terugdraaien door een nieuwe commit te maken die deze wijzigingen ongedaan maakt en het bestand feitelijk verwijdert. In mijn geval is de hash als volgt:
043b634d76a7a7744757350512b6367417c29e0
Jouw hash voor deze commit zal echter anders zijn. We kunnen nu deze commit terugdraaien:
Vervang deze hash door jouw hash.
Opnieuw wordt de standaardteksteditor geopend met het standaard commitbericht voor het terugdraaien. We laten dit ongewijzigd.
Vervolgens sluiten we de teksteditor op de juiste manier en tonen we de wijzigingen die in deze laatste commit zijn aangebracht:
7 verwijderingen hebben plaatsgevonden, wat betekent dat alle 7 regels van het bestand zijn verwijderd. Laten we nu verifiëren dat het bestand zelf is verwijderd door alle niet-verborgen bestanden en mappen in onze projectmap weer te geven:
Het bestand recipe.txt
is succesvol verwijderd.
Bedankt voor je feedback!