Git

Git Stash met naam

Git Stash met naam

Hoe u uw wijzigingen met de bijbehorende naam kunt opslaan en deze daarna kunt vinden

Ontwikkelaars moeten vaak multitasken. Mogelijk werkt u aan een nieuwe functie en is er mogelijk een verzoek om een ​​bug op te lossen. Of misschien ben je de hoofdontwikkelaar van meerdere projecten.

Als je tussen taken wisselt, wil je soms geen onvoltooid werk doen. In deze gevallen kan het git stash-commando een grote hulp zijn. Hiermee kun je je wijzigingen stapelen en later terugkeren naar het onvoltooide werk zonder onnodige commits aan je git-repositories toe te voegen.

Een workflow voor Git Stash

Laten we een git master branch initialiseren en een bestand ReadMe vastleggen.tekst.

$ mkdir mijn_project
$ cd mijn_project/
$ git init
$ raak LeesMij aan.tekst
$ git add -A
$ git commit -m "Initialiseren"

Laten we nu nog een bestand toevoegen met de naam a.txt naar de master branch.

$ raak een . aan.tekst
$ git add -A
$ git commit -m "A toegevoegd.tekst"

Als u de geschiedenis controleert, ziet u:

$ git log --oneline
d79f7aa Toegevoegd a.tekst
9434d7e Initialiseren

Laten we nu een feature1 branch maken en een b . toevoegen.txt-bestand:

$ git branch-functie1
$ git afrekenfunctie1
$ raak b . aan.tekst
$ git add -A
$ git commit -m "Toegevoegd b.tekst"

Open je b.txt-bestand in een editor en zet in de regel:

Ik sta op het punt dit te veranderen in..

En sla het bestand op. Als je je git-status controleert, zie je het volgende:

$ git-status
Op vertakkingsfunctie1
Wijzigingen niet gestaged voor commit:
(gebruik "git add ." … " om bij te werken wat er zal worden vastgelegd)
(gebruik "git checkout" -- … " om wijzigingen in de werkdirectory te negeren)
 
gewijzigd:   b.tekst
 
geen wijzigingen toegevoegd aan commit (gebruik "git add" en/of "git commit -a")

Stel dat u in dit stadium een ​​verzoek krijgt om de a.txt-bestand op de master-branch. Maar je bent nog niet klaar met de b.txt-bestand. Als je de master branch probeert uit te checken, krijg je de volgende foutmelding:

$ git checkout master
fout: uw lokale wijzigingen in de volgende bestanden worden overschreven bij het afrekenen:
b.tekst
Alsjeblieft, leg je wijzigingen vast of bewaar ze voordat je van branch kunt wisselen.
Afbreken

Maar je wilt het onvoltooide werk niet vastleggen in b.tekst. Je kunt de git stash in deze situatie gebruiken:

$ git stash
Opgeslagen werkmap en indexstatus WIP op feature1: 2cfe39b Toegevoegd b.tekst
HEAD staat nu op 2cfe39b Toegevoegd b.tekst

Als je b . aanvinkt.txt, het moet leeg zijn:

$ kat b.tekst
$

Als je de voorraad controleert, zie je:

$ git stash-lijst
stash@0: WIP op feature1: 2cfe39b Toegevoegd door.tekst

Als je de master branch probeert uit te checken, zou je dat nu moeten kunnen:

$ git checkout master
Overgeschakeld naar tak 'master'

Veronderstel dat je de nodige wijzigingen aanbrengt op de master en dan teruggaat naar feature1 branch:

$ git afrekenfunctie1

Jouw B.txt is nog leeg:

$ kat b.tekst
$

Maar als u de wijzigingen uit de stash haalt met behulp van de volgende opdracht:

$ git stash van toepassing
 
Op vertakkingsfunctie1
Wijzigingen niet gestaged voor commit:
(gebruik "git add ." … " om bij te werken wat er zal worden vastgelegd)
(gebruik "git checkout" -- … " om wijzigingen in de werkdirectory te negeren)
 
gewijzigd:   b.tekst
 
geen wijzigingen toegevoegd aan commit (gebruik "git add" en/of "git commit -a")

De opdracht stash apply nam de opgeslagen wijzigingen en paste deze toe op b.txt-bestand
Je kunt je werk afmaken in b.txt mijn wijziging van de regel

Ik sta op het punt dit te veranderen in..


Naar

Ik sta op het punt dit te veranderen in KLAAR

Ga nu door en leg uw wijzigingen vast:

$ git add -A
$ git commit -m "Gewijzigd door.tekst"

Als je een stash toepast, wordt deze niet automatisch uit de stash verwijderd. Je moet het handmatig opruimen:

$ git stash drop
Gedropt refs/stash@0 (0a66a16b32633e8d564d08e38254c491c1b1d3be)

Waarom Git Stash met naam?

De git-stash is een stapel. Zodat u uw wijzigingen kunt blijven stapelen.

Stel dat u “X” toevoegt aan b.txt, bewaar het, voeg een "Y" toe aan b.txt, berg het op en voeg een "Z" toe aan b.txt en bewaar het. Als je de stashgeschiedenis bekijkt, zie je zoiets als dit:

$ git stash-lijst
[e-mail beveiligd]0: WIP op functie1: 2d6f515 Gewijzigd door.tekst
[e-mail beveiligd]1: WIP op functie1: 2d6f515 Gewijzigd door.tekst
[email protected]2: WIP op functie1: 2d6f515 Gewijzigd door.tekst

Je hebt geen manier om te weten welke stash welke verandering heeft. Als je aan het stashen bent, kun je de optie Opslaan gebruiken om opmerkingen te plaatsen. Je kunt de opmerkingen gebruiken om een ​​naam aan je stash te koppelen en ze herkenbaar te maken:

$ git stash save "X"
Opgeslagen werkmap en indexstatus Op feature1: X
HEAD staat nu op 2d6f515 Gewijzigd b.tekst

Voor het toevoegen van "X", "Y" en "Z" modificaties, kun je het volgende in je stash krijgen met behulp van de opslagoptie voor elke stash:

$ git stash-lijst
stash@0: Aan functie1: Z
stash@1: Op functie1: Ja
stash@2: Op functie1: X

Nu heb je een naam voor elke wijziging die je hebt opgeslagen. Helaas kun je de naam niet gebruiken om de voorraad op te halen. Je moet het stashnummer gebruiken. Stel dat u uw "Y" -wijziging wilt krijgen. U ziet dat [e-mail beveiligd]1 Y . is. U kunt die wijziging dus toepassen op uw huidige filiaal:

$ git stash stash toepassen@1

en je vriend.txt moet de wijzigingen bevatten van [email protected]1.

Je kunt dezelfde methode gebruiken om een ​​stash te droppen. Stel dat je je realiseert dat je de X-voorraad niet langer nodig hebt. Je kunt gewoon de volgende opdracht gebruiken om die stash te verwijderen:

$ git stash drop stash@2

En de voorraad zou weg moeten zijn:

$ git stash-lijst
stash@0: Aan functie1: Z
stash@1: op functie1: Y

Houd er rekening mee dat als u de opties voor toepassen en neerzetten zonder parameters gebruikt, deze de bovenkant van de stapel gebruikt ([email protected]0).

Conclusie

Het git stash commando is een krachtige manier om je werkruimte te beheren. Als u deze opdracht onder de knie hebt, kunt u efficiënter werken.

Verdere studie:
  • https://git-scm.com/book/nl/v1/Git-Tools-Stashing
Referenties:

Stack Overflow: hoe-naam-en-ophalen-een-stash-op-naam-in-git

SuperTuxKart voor Linux
SuperTuxKart is een geweldige titel die is ontworpen om je de Mario Kart-ervaring gratis te bieden op je Linux-systeem. Het is behoorlijk uitdagend en...
Strijd om Wesnoth Zelfstudie
The Battle for Wesnoth is een van de meest populaire open source strategiespellen die je op dit moment kunt spelen. Dit spel is niet alleen al heel la...
0 A.D. zelfstudie
Van de vele strategiespellen die er zijn, 0 A.D. slaagt erin om op te vallen als een uitgebreide titel en een zeer diep, tactisch spel ondanks dat het...