Sluit slechts één bestand op

Ik wil graag alleen de wijzigingen van een enkel bestand kunnen opslaan:

git stash save -- just_my_file.txt

Het bovenstaande werkt echter niet. Alternatieven?


Antwoord 1, autoriteit 100%

Ik denk dat stash -pwaarschijnlijk de keuze is die je wilt, maar voor het geval je in de toekomst nog meer lastige dingen tegenkomt, onthoud dat:

Stashis eigenlijk gewoon een heel eenvoudig alternatief voor de iets complexere branch-sets. Stash is erg handig om dingen snel te verplaatsen, maar je kunt complexere dingen doen met branches zonder dat er veel hoofdpijn en werk bij komt kijken.

# git checkout -b tmpbranch
# git add the_file
# git commit -m "stashing the_file"
# git checkout master

ga je gang en doe wat je wilt, en later gewoon rebaseen/of mergede tmpbranch. Het is echt niet zoveelextra werk als je zorgvuldiger moet traceren dan de stash toestaat.


Antwoord 2, autoriteit 95%

Als u geen bericht wilt opgeven met uw opgeslagen wijzigingen, geeft u de bestandsnaam door na een dubbel streepje.

$ git stash -- filename.ext

Als het een niet-getrackt/nieuw bestand is, moet je het eerst stagen.

Als je echter weleen bericht wilt specificeren, gebruik dan push.

git stash push -m "describe changes to filename.ext" filename.ext

Beide methoden werken in git-versies 2.13+


Antwoord 3, autoriteit 26%

Je kunt interactief enkele regels opslaan met git stash -p(analoog aan git add -p).

Er is geen bestandsnaam voor nodig, maar je kunt gewoon andere bestanden overslaan met dtotdat je het bestand hebt bereikt dat je wilt opslaan en alle wijzigingen daarin opslaat met a>.


Antwoord 4, autoriteit 11%

De beste optie is om alles behalve dit bestand te stagen, en stash te vertellen om de index te behouden met git stash save --keep-index, waardoor je niet-gestaged bestand wordt opgeborgen:

$ git add .
$ git reset thefiletostash
$ git stash save --keep-index

Zoals Dan aangeeft, is thefiletostashde enige die wordt gereset door de stash, maar het bewaart ook de andere bestanden, dus het is niet precies wat je wilt.


Antwoord 5, autoriteit 6%

Voor het geval je eigenlijk ‘wijzigingen negeren’ bedoelt wanneer je ‘git stash’ gebruikt (en git stash niet echt gebruikt om het tijdelijk op te bergen), in dat geval kun je

git checkout -- <file>

Merk op dat git stash slechts een sneller en eenvoudig alternatief is voor vertakkingen en dingen doen.

Other episodes