logo

Git | Werken met Stash

Vereisten: Git

Met Git kunnen meerdere gebruikers tegelijkertijd aan hetzelfde project werken. Stel dat een ontwikkelaar aan een functie in een branch werkt en hij wijzigingen uit de branch van een andere ontwikkelaar moet halen of dat hij dringend aan een andere feature moet werken, maar de feature waaraan hij momenteel werkt, is onvolledig. In dit geval kunt u de gedeeltelijke code van de momenteel werkende functie niet vastleggen. Om deze nieuwe functie toe te voegen, moet u uw huidige wijzigingen verwijderen en ergens anders opslaan. Voor dit soort situaties biedt Git een zeer nuttig commando dat bekend staat als ‘ git voorraad '. git voorraad command slaat de eerder geschreven code op en keert vervolgens terug naar de laatste commit voor een nieuwe start. Nu kunt u de nieuwe functie toevoegen zonder de oude te verstoren, aangezien deze lokaal is opgeslagen. Nadat u zich heeft vastgelegd voor de nieuwe functie, kunt u doorgaan met het werken aan de oude functie, die onvolledig en niet-vastgelegd was.



Git stash versus Git Commit

Er zijn twee alternatieve manieren om wijzigingen in de git-repository op te slaan: stash en commit.

Git-opslag: Het Git stash-commando kan worden gebruikt om dit te bereiken als een ontwikkelaar aan een project werkt en de wijzigingen wil behouden zonder ze vast te leggen. Hierdoor kan hij van vestiging wisselen en aan andere projecten werken zonder de bestaande wijzigingen te beïnvloeden. U kunt wijzigingen indien nodig ongedaan maken, de huidige status wordt opgeslagen en ontwikkelaars worden teruggezet naar een eerdere status.

Git-commit: Ontwikkelaars willen hun wijzigingen in de broncode permanent opslaan in de repositorygeschiedenis. De git commit commando kan worden gebruikt om dit te bereiken. Git maakt een nieuwe commit aan die je wijzigingen documenteert en deze toevoegt aan de repositorygeschiedenis.



Op te sommen. Git legt wijzigingen in de repositorygeschiedenis permanent vast, terwijl Git stash wordt gebruikt om een ​​back-up te maken van de bestanden waar we aan werken, maar die nog niet klaar zijn om te worden vastgelegd.

Git Stash versus Git Reset

Beide commando's kunnen worden gecombineerd om wijzigingen in een Git-repository te beheren en hebben verschillende gebruiksscenario's.

Git reset en Git stash Met deze twee commando's kunnen we alle eerder verwijderde bestanden en waarvan een back-up is gemaakt, terugzetten naar de huidige werkmap. Deze twee primaire verschillen zijn als volgt:



Git Stash

Git-reset

Git stash wordt gebruikt om de bestanden op te slaan die zijn gewijzigd en die nog niet klaar zijn om te worden vastgelegd.

Git reset kan de wijzigingen volledig ongedaan maken en verandert de branch pointer naar de nieuwe commit

Ontwikkelaars kunnen van vestiging wisselen en aan andere taken werken zonder de huidige wijzigingen te beïnvloeden.

Wijzigingen die al zijn aangebracht, worden door Git reset verwijderd.

Git Stash versus Git Stage

Staging wordt gebruikt om de wijzigingen gereed te maken voor de volgende commit, terwijl Git stash wordt gebruikt om een ​​back-up te maken van bestanden die zijn gewijzigd maar nog niet klaar zijn om te worden vastgelegd. Beide commando's kunnen worden gecombineerd om wijzigingen in een Git-repository te beheren en hebben verschillende gebruiksscenario's.

Git Stash Git-podium
Git stash wordt gebruikt om de back-up van bestanden te maken Bestanden worden aan de git-index toegevoegd met behulp van de git-stage.

Git stash wordt gebruikt als je naar een andere taak of branch moet overschakelen terwijl je aan een functie of bugfix werkt.

Wijzigingen in Git-fasen moeten worden opgenomen in de volgende commit als je het git add-commando gebruikt.

In welke map wordt de Git Stash-geschiedenis opgeslagen?

Wanneer we git stash gebruiken, worden de gegevens opgeslagen in de vorm van stashes in onze lokale repository. Standaard worden de gegevens opgeslagen in het git/refs/stash-bestand. In dit bestand worden alle referenties opgeslagen en worden de daadwerkelijke gegevens opgeslagen in de map .git/objects, net als andere Git-objecten.

vind in kaart c++

Het onderstaande commando wordt gebruikt om alle aangemaakte stashes weer te geven.

git stash list>

Hoe bewaar je veranderingen in Git?

Om de niet-vastgelegde wijzigingen op te slaan voor later gebruik, kunt u de ‘git stash’ commando. Met dit commando worden je lokale wijzigingen opgeslagen en wordt de werkmap teruggezet zodat deze overeenkomt met de HEAD-commit, zodat je een schone werkmap krijgt.

Hier zijn enkele belangrijke opties die het meest worden gebruikt:

    Git stash Git stash opslaan Git stash lijst Git stash toepassen Git stash veranderingen Git stash pop Git stash drop Git stash opruimen Git stash branch

Je werk opslaan (Git Stash)

git stash>
git-status

Standaard actief git voorraad zal de wijzigingen opslaan die aan je index zijn toegevoegd (gefaseerde wijzigingen) en wijzigingen die zijn aangebracht in bestanden die momenteel worden bijgehouden door Git (niet-gefaseerde wijzigingen). Gebruik om uw niet-bijgehouden bestanden op te bergen git stash-u .

Meerdere stashes beheren (Git Stash-lijst)

Je kunt meerdere stashes maken en deze bekijken met behulp van de ‘git stashlijst’ commando. Elke stash-item wordt vermeld met zijn naam (bijv. voorraad@{1} ), de naam van de vertakking die actueel was toen de invoer werd gemaakt, en een korte beschrijving van de commit waarop de invoer was gebaseerd.

git stash list>
git stashlijst

Om meer context aan de voorraad te geven, maken we de voorraad met behulp van de volgende opdracht:

git stash save 'message'>

Wat zijn Git Stash Apply en POP (Git Stash Apply & POP)

U kunt de eerder opgeslagen wijzigingen opnieuw toepassen met de ‘git stashpop’ of ‘git stash toepassen’ opdrachten. Het enige verschil tussen beide commando's is dat ‘git stashpop’ verwijdert de wijzigingen uit de voorraad en past de wijzigingen opnieuw toe in de werkkopie while ‘git stash toepassen’ past alleen de wijzigingen in de werkkopie opnieuw toe zonder de wijzigingen uit de voorraad te verwijderen. In eenvoudige woorden, knal verwijdert de status uit de stashlijst while toepassen verwijdert de staat niet van de voorraadlijst. Met behulp van het daaropvolgende commando kunnen we de opgeslagen wijzigingen opnieuw toepassen. De meest recente stash wordt toegepast op onze werkmap en wordt ook uit de lijst met stashes gehaald.

git stash pop>
git stashpop
git stash apply>
git stash van toepassing

Standaard ‘git stashpop’ of ‘git stash toepassen’ zal de meest recent aangemaakte stash opnieuw toepassen: stash@{0} Om te kiezen welke stash je wilt toepassen, kun je de ID als laatste argument doorgeven ( Voor bijv. :- git stash pop stash@{2}).

Git Stash-show

git stashshow commando wordt gebruikt om de samenvatting weer te geven van de bewerkingen die op de voorraad zijn uitgevoerd.

git stash show>
git stashshow

Een branch aanmaken vanuit je voorraad (Git Stash Branch)

Als je een nieuwe branch wilt aanmaken en uitchecken, beginnend bij de commit waarin de stash oorspronkelijk is aangemaakt en de wijzigingen wilt toepassen die in de stash zijn opgeslagen, gebruik dan ‘git stash branch branch_name stash_name’ . Het verwijdert de stash die als argument is opgegeven en als er geen stash wordt opgegeven, wordt de laatste stash verwijderd.

git stash branch newbranch stash@{0}>
git stash-branch

Je voorraad opruimen (Git Stash Clear)

Om een ​​bepaalde voorraad te verwijderen ( Bijvoorbeeld: – stash@{1}), gebruik ‘git stash drop stash@{1}’ . Standaard wordt deze opdracht verwijderd voorraad@{0} als er geen argument wordt opgegeven ( git stashdrop ). Om alle voorraad in één keer te verwijderen, gebruik je de ‘git stash opruimen’ commando.

Git Stash Clear

Met het git stash commando kunnen we niet-vastgelegde wijzigingen behouden, zodat we ze in de toekomst indien nodig kunnen gebruiken. Wanneer we het git stash commando gebruiken, wordt er automatisch een back-up van de bestanden gemaakt. Hierdoor kunnen we van filiaal wisselen, onze klusjes uitvoeren en de bestanden vervolgens gemakkelijk terughalen als we klaar zijn om er weer aan te werken.

Git voorraad

Niet-bijgehouden of genegeerde bestanden opslaan

We kunnen het git stash commando gebruiken om de bestanden op te slaan die niet-getrackte of genegeerde bestanden zijn. Door de onderstaande stappen te volgen, kunnen we onze bestanden opslaan:

Stap 1: Bewaar de wijzigingen daarvoor met behulp van de onderstaande opdracht.

git stash save --include-untracked>

–include-untracked hierdoor worden ook alle niet-getraceerde bestanden opgeslagen.

Stap 2: Controleer de voorraad:

Gebruik de onderstaande opdracht om te bevestigen dat de voorraad is aangemaakt:

git stash list>

Stap 3: Door het volgende commando te gebruiken, kunnen we de voorraad terugbrengen en toepassen.

git stash apply stash@{0}>

Stap 4: Zodra het terugbrengen van de voorraad is voltooid als deze ongewenst is, kunnen we de voorraad verwijderen met behulp van de volgende opdracht.

git stash drop stash@{0}>

Git Stash beste praktijken

Hier volgen enkele best practices voor het gebruik van de Git voorraad commando.

  1. Gebruik git stash niet te veel: Git stash moet matig worden gebruikt als het erg belangrijk is om aan een andere taak te werken. Alleen als we git stash gebruiken, heeft dit invloed op de veranderingen die moeten worden aangebracht bij het committen.
  2. Vermijd onnodige berichten: Met behulp van git stash kun je een bericht toevoegen om de wijzigingen die je aan het stashing beschrijft te beschrijven. Maak de boodschap betekenisvol. Als je later moet onthouden wat er in de voorraad zit, kan dit van pas komen. Gebruik verklaringen die informatief en suggestief zijn en die de verborgen veranderingen accuraat weerspiegelen.
  3. Vestigingen inzetten: Stashing is een handig hulpmiddel bij het werken met Git-takken. Voordat u wijzigingen opslaat, moet u een nieuwe vertakking maken, zodat u naar andere taken of vertakkingen kunt overschakelen zonder uw huidige wijzigingen te beïnvloeden. Keer terug naar de vertakking en pas de voorraad toe wanneer u klaar bent om opnieuw aan de wijzigingen te werken.
  4. Wijzigingen moeten zo snel mogelijk worden doorgevoerd: opslag mag alleen als tijdelijke oplossing worden gebruikt. Zodra u klaar bent met het aanbrengen van een reeks wijzigingen, moet u deze vastleggen in de repository om de wijzigingen bij te houden.