Wat is het verschil tussen git reset -mixed, -soft en -hard?

Wat Is Het Verschil Tussen Git Reset Mixed Soft En Hard



Op Git is elke commit gekoppeld aan de vorige commit, en de HEAD wijst naar de meest recente commit in de werkende branch. De commit geschiedenis wordt opgeslagen als een boom van commits. Soms moeten ontwikkelaars echter de commit-geschiedenis wijzigen. Hiervoor is de “ $ git-reset ” commando wordt gebruikt om de geschiedenis van de Git-repository te wijzigen en gemaakte fouten te herstellen.

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

In 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 --online

Onderstaande 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-status

Men 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 --online

Hier 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-status

Het 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 --online

Onderstaande 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-status

Het 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:

$ ls

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