Hoe kan ik een specifiek bestand opbergen?

Hoe kan ik een specifiek bestand opslaan, terwijl de andere die momenteel zijn gewijzigd uit de stash blijven die ik ga opslaan?

Als git status me bijvoorbeeld dit geeft:

younker % gst      
# On branch master
# Your branch is ahead of 'origin/master' by 1 commit.
#
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/controllers/cart_controller.php
#   modified:   app/views/cart/welcome.thtml
#
no changes added to commit (use "git add" and/or "git commit -a")

en ik wil alleen app/views/cart/welcome.thtml opslaan, hoe moet ik dat doen? Zoiets als (maar dit werkt natuurlijk niet):

git stash save welcome_cart app/views/cart/welcome.thtml

Antwoord 1, autoriteit 100%

EDIT:Sinds git 2.13 is er een commando om een specifiek pad naar de stash op te slaan: git stash push <path>. Bijvoorbeeld:

git stash push -m welcome_cart app/views/cart/welcome.thtml

OUD ANTWOORD:

Je kunt dat doen met git stash --patch(of git stash -p) — je komt in de interactieve modus waar je elke hunk dat is veranderd. Gebruik nom de bestanden die u niet wilt opbergen over te slaan, ywanneer u degene tegenkomt die u wilt opslaan, en qom te stoppen en de resterende hunks ongestoord te laten. abewaart de getoonde hunk en de rest van de hunks in dat bestand.

Niet de meest gebruiksvriendelijke aanpak, maar het klaart het werk als je het echt nodig hebt.


Antwoord 2, autoriteit 13%

ik meestal toe te voegen aan index veranderingen die ik wil niet te verstoppen en daarna stash met --keep-indexoptie

git add app/controllers/cart_controller.php
git stash --keep-index
git reset

De laatste stap is optioneel, maar meestal, je wilt. Het verwijdert veranderingen ten opzichte van de index.


Waarschuwing
Zoals opgemerkt in de comments, git stash --keep-indexduwt alles op de stash, zowel geënsceneerd en unstaged. De --keep-indexverlaat gewoon de index alleen nadat de stash is gedaan. Dit kan samenvoegen conflicten veroorzaken wanneer u later de stash pop.


Antwoord 3, Autoriteit 3%

Om toe te voegen aan het antwoord svick’s, de -moptie voegt gewoon een bericht naar uw stash, en is volledig optioneel. Zo is de opdracht

git stash push [paths you wish to stash]

is volkomen geldig. Dus bijvoorbeeld, als ik wil alleen stash veranderingen in de src/directory, ik kan gewoon lopen

git stash push src/

Antwoord 4

Als u OK met behulp van een GIT GUI cliënt, Fork kan behoorlijk naadloos dit doen vanaf mei 2020 . Een GIF van de partiële stash functionaliteit zal dit beter dan woorden tonen:

Merk op dat Fork (dat is een moeilijke naam aan Google voor!) Is niet gratis software en kost $ 50 na de evaluatieperiode, maar je kunt gewoon negeren de pop-ups zoals je voor WinRAR of WinZip te doen.


Antwoord 5

Als u gebruik maakt van Visual Studio code is er een eenvoudigere manier om geselecteerde bestanden te verstoppen.

  1. Ga naar de Bron tab Controle
  2. Selecteer de bestanden die u wilt
  3. stash

  4. Klik er met de rechtermuisknop op, je zult veel opties zien. Klik op Wijzigingen opslaan
  5. Nu zal het je vragen om een stashbericht toe te voegen. Voeg een begrijpelijke boodschap toe.


Other episodes