Dit artikel legt in het kort het verschil uit tussen git reset –hard, –soft en –mixed.
Wat is het verschil tussen git reset -mixed, -soft en -hard?
Git biedt meerdere reset-opties. Op basis van hoe ze omgaan met de commits, verschillen alle beschikbare opties van elkaar. Ze wijzigen allemaal de Git-geschiedenis en verplaatsen de HEAD terug. Bovendien gaan ze anders om met de veranderingen, zoals:
- De ' -zacht ” optie gebruikt met de “ $ git-reset '-opdracht om de bestanden te behouden en de commit-wijzigingen terug te sturen naar de Git-staging-index.
- “ $ git reset –gemengd ” wordt gebruikt om de commit-wijzigingen ongedaan te maken en het bestand uit de staging-index te verwijderen zonder het uit de werkdirectory te verwijderen.
- De ' -moeilijk ' optie met de ' $ git-reset ” commando wordt gebruikt om alle wijzigingen te verwijderen en ze uit de lokale werkmap te verwijderen.
Laten we een voorbeeld nemen om te zien hoe de ' $ git-reset ” commando werkt met verschillende opties!
Stap 1: Ga naar de gewenste Git-repository
Ga eerst naar de gewenste Git-repository door de ' CD ” commando:
$ CD 'C:\Ga \t is_repo'
Stap 2: maak een bestand aan
Voer nu de onderstaande opdracht uit om een bestand te maken:
$ aanraken Bestand4.txt
Stap 3: Bestand toevoegen aan Staging-index
Gebruik de ' git toevoegen ” commando om het nieuw gegenereerde bestand toe te voegen aan de staging-index:
$ git toevoegen Bestand4.txt
Stap 4: wijzigingen doorvoeren
Voeg vervolgens alle wijzigingen toe aan de werkrepository door de opdracht ' git vastleggen ” commando:
$ git vastleggen -m 'Bestand 4 toegevoegd'
Stap 5: controleer het Git-logboek
Controleer vervolgens de Git-loggeschiedenis om de laatste commits te bekijken die zijn toegevoegd:
$ git-logboekIn de uitvoer hieronder is te zien dat alle laatst toegevoegde commits worden weergegeven, en de ' HOOFD ”wijst naar de recente commit:
Opmerking: Om de huidige aanwijspositie van de HEAD op een betere manier te controleren, voert u de opdracht ' git-logboek ” commando samen met de “ -een lijn ”vlag:
$ git-logboek --onlineOnderstaande uitvoer toont de lijst met commit SHA-hash met commit-berichten:
Stap 6: Gebruik git reset –soft Command
Om de toegevoegde wijzigingen van de Git-repository terug te zetten naar de testindex, gebruikt u de git-reset ” commando samen met de “– zacht ” optie en specificeer de gewenste HEAD-positie waar de aanwijzer moet worden verplaatst:
$ git-reset --zacht HOOFD~ 1
Stap 7: Controleer Git-status
Controleer nu de terugkerende positie van de HEAD, controleer de status van de Git-repository:
$ git-statusMen ziet dat de ' git reset –zacht ” commando heeft de commit wijzigingen teruggegeven aan de Git staging index. Bovendien is de “ Bestand4.txt ”-bestand bevindt zich nu in de Git staging-index en moet worden vastgelegd:
Stap 8: Controleer Git Log
Om de huidige positie van HEAD te bekijken, voert u het gegeven commando uit samen met de ' -een lijn ' optie:
$ git-logboek --onlineHier wijst het HOOFD naar de ' Bestand3 ' verbinden:
Stap 9: Gebruik git reset — gemengd commando
Om vastgelegde wijzigingen ongedaan te maken en de bestanden uit het verzamelgebied te verwijderen zonder ze uit de werkmap te verwijderen, voert u de opdracht ' $ git reset –gemengd ” commando samen met de vereiste HEAD-positie van de commit:
$ git-reset --gemengd HOOFD~ 1
Stap 10: Controleer Git-status
Bekijk de nieuw toegevoegde wijzigingen door de status van de Git-repository te controleren:
$ git-statusHet kan worden waargenomen dat de opgegeven commit-wijzigingen worden verwijderd uit het verzamelgebied. Ze worden echter in het werkgebied geplaatst:
Stap 11: Controleer het Git-logboek
Controleer de referentieloggeschiedenis van de Git-repository samen met de SHA-hash:
$ git-logboek --online
Stap 12: Gebruik git reset — harde opdracht
Om toegevoegde wijzigingen uit de Git lokale werkdirectory te verwijderen, voert u de opdracht ' $ git reset –hard ” commando:
$ git-reset --moeilijk HOOFD~ 1
Stap 13: Controleer de teruggekeerde HEAD-aanwijzer
Om de HEAD-aanwijzer te verifiëren, keert u terug naar de gespecificeerde positie, voert u de ' git-logboek ” commando:
$ git-logboek --onlineOnderstaande uitvoer laat zien dat de HEAD naar de ' Bestand1 toegevoegd ' verbinden:
Stap 14: Controleer Git-status
Controleer de Git-status om de toegevoegde wijzigingen te bekijken:
$ git-statusHet is te zien dat we geen track hebben en wijzigingen in afwachting van ' Bestand2.txt ' het dossier. Daarom is File2.txt volledig verwijderd:
Stap 15: Controleer de lijst met repository-inhoud
Voer de opdracht ' ls ” commando:
$ lsZoals je kunt zien, is de “ Bestand2.txt ” bestand bestaat niet in de huidige directory:
We hebben het verschil uitgelegd tussen de opties git reset –mixed, –soft en –hard.
Conclusie
De ' git-reset ” commando wordt gebruikt om de wijzigingen te resetten, de geschiedenis van de Git-repository aan te passen en fouten te herstellen. De ' git reset –zacht ” commando bewaart de bestanden en retourneert de commit-wijzigingen naar het Git-staging-gebied. Daarentegen is de “ git reset – gemengd ” commando maakt de commit-wijzigingen ongedaan en verwijdert het bestand uit de staging-index zonder het uit de werkdirectory te verwijderen. Om alle wijzigingen te verwijderen en ze te verwijderen uit het werkgebied van Git, de ' git reset –hard ” commando kan worden gebruikt. Dit artikel illustreerde het verschil tussen git reset –mixed, –soft en –hard.