Hoe een stash verwijderen gemaakt met Git Stash Maken?

Git Stash lijkt veel te doen wat ik wil, behalve dat het een beetje moeilijk is voor script, omdat het als je geen wijzigingen hebt, dan git stash; git stash popZal iets anders doen dan als u wijzigingen in uw repository hebt.

Het lijkt erop dat git stash createis het antwoord op dat probleem, en alles werkt, behalve één ding … Ik kan niet van de gemaakte stash kwijt. Is er een manier om van de stash af te komen?

Om het 100% duidelijk te maken wat ik aan het doen ben:

Maak de stash:

~/tmp/a(master) $ git stash create 
60629375d0eb12348f9d31933dd348ad0f038435
~/tmp/a(master) $ git st
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#
~/tmp/a(master) $ git reset --hard
HEAD is now at 555d572 log message

Gebruik de stash:

~/tmp/a(master) $ git apply 60629375d0eb12348f9d31933dd348ad0f038435
fatal: can't open patch '60629375d0eb12348f9d31933dd348ad0f038435': No such file or directory
~/tmp/a(master) $ git stash apply 60629375d0eb12348f9d31933dd348ad0f038435
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#   new file:   b
#

Verwijder de stash: (behalve dat dit laatste bit niet werkt)

~/tmp/a(master) $ git stash drop !$
git stash drop 60629375d0eb12348f9d31933dd348ad0f038435
'60629375d0eb12348f9d31933dd348ad0f038435' is not a stash reference

1, Autoriteit 100%

om een ​​normale stash te verwijderen die is gemaakt met git stash, u wilt git stash dropof git stash drop stash@{n}. Zie hieronder voor meer informatie.


Je hoeft een stash die is gemaakt met git stash createniet te verwijderen. Uit de documenten:

Maak een stash-item (dat een normaal commit-object is) en retourneer zijn objectnaam, zonder het ergens in de ref-naamruimte op te slaan. Dit is bedoeld om handig te zijn voor scripts. Het is waarschijnlijk niet het commando dat u wilt gebruiken; zie “opslaan” hierboven.

Omdat niets verwijst naar de stash-commit, zal het uiteindelijk worden verzameld.


Een stash gemaakt met git stashof git stash savewordt opgeslagen in refs/stashen kan worden verwijderd met git stash drop. Zoals met alle Git-objecten, wordt de feitelijke stash-inhoud niet van uw computer verwijderd totdat een gcdie objecten verwijdert nadat ze zijn verlopen (standaard is 2 weken later).

Oudere stashes worden opgeslagen in de refs/stashreflog(probeer cat .git/logs/refs/stash), en kan worden verwijderd met git stash drop stash@{n}, waarbij nis het nummer getoond door git stash list.


Antwoord 2, autoriteit 98%

git stash dropneemt geen parameter – die de bovenste stash laat vallen – of een stash-referentie die eruitziet als: stash@{n}die ngeeft aan welke stash moet worden gedropt. Je kunt geen commit-ID doorgeven aan git stash drop.

git stash drop            # drop top hash, stash@{0}
git stash drop stash@{n}  # drop specific stash - see git stash list

Als je een stash laat vallen, verandertde stash@{n}aanduidingen van alle stashes verderop in de stapel.

Ik weet niet zeker waarom je denkt dat je een stash moet laten vallen, want als je stash creategebruikt, wordt er geen stash-item gemaakt voor je “stash”, dus er valt niets te laten vallen .


Antwoord 3, autoriteit 43%

Als je 100% zeker bent dat je maar één stash hebt of je alle stash wilt verwijderen(maak een git stash listom 107% zeker te zijn), dan kan een:

git stash clear

..en vergeet ze (het verwijdert alle stashes).

Opmerking: dit antwoord toegevoegd voor degenen die hier zijn beland op zoek naar een manier om ze allemaal te wissen (zoals ik).


Antwoord 4, autoriteit 16%

Van git doc: http://git-scm.com/docs/git-stash

laat vallen [-q|–stil] []

Verwijder een enkele stash-status uit de stash-lijst. Als nee wordt gegeven, wordt de laatste verwijderd. d.w.z. stash@{0}, anders moet het een geldige stash-logreferentie zijn van de vorm stash@{}.

voorbeeld:

git stash drop stash@{5}

Hiermee zou het stash-item 5 worden verwijderd. Om de hele lijst met stashes te zien:

git stash list

Antwoord 5, autoriteit 13%

U zou

. moeten gebruiken

git stash save

en niet

git stash create

omdat dit een stash creëert (wat een normaal commit-object is) en de objectnaam retourneert, zonder het ergens op te slaanin de ref namespace. Daarom zal het niet toegankelijk zijn met stash apply.

Gebruik git stash save "some comment"wordt gebruikt als je ongestagede wijzigingen hebt die je wilt repliceren/verplaatsen naar een andere branch

Gebruik git stash apply stash@{0}(ervan uitgaande dat uw opgeslagen stash-index 0 is) wanneer u wilt dat uw opgeslagen (verborgen) wijzigingen worden weerspiegeld in uw huidige branch

je kunt altijd git stash listgebruiken om al je stash-indexen te controleren

en gebruik git stash drop stash@{0}(aannemen van uw opgeslagen Stash-index is 0 en u wilt het verwijderen) om een ​​bepaalde stash te verwijderen.


6, Autoriteit 3%

git stash           // create stash,
git stash push -m "message" // create stash with msg,
git stash apply         // to apply stash,
git stash apply indexno // to apply  specific stash, 
git stash list          //list stash,
git stash drop indexno      //to delete stash,
git stash pop indexno,
git stash pop = stash drop + stash apply
git stash clear         //clear all your local stashed code

7

het werkt ook

git stash drop <index>

zoals

git stash drop 5

8

Het document is hier (in het Chinees) Klik alsjeblieft.

U kunt

gebruiken

git stash lijst

Git Stash Drop Stash @ {0}


9

Git Stash Clear zal Complete Stash wissen,

cmd: git stash clear

Als u een bepaalde stash wilt verwijderen met een stash-index, kunt u de druppel gebruiken.

cmd: git stash drop 4

(4 is Stash ID of Stash Index)

Other episodes