मैं एक बार में अपने सभी Git स्‍टैस कैसे हटा सकता हूं?


1405

मैं एक बार में अपने सभी Git स्‍टैस कैसे हटा सकता हूं ?

विशेष रूप से मेरा मतलब है, एक कमांड में टाइप करने के साथ।

जवाबों:


2460

निम्न आदेश आपके सभी स्टैम्स को हटा देता है:

git stash clear

से Git प्रलेखन :

clear

सभी स्टैक्ड अवस्थाओं को निकालें।

महत्वपूर्ण चेतावनी: उन राज्यों को फिर छंटाई के अधीन किया जाएगा, और (...) को पुनर्प्राप्त करना असंभव हो सकता है।


13
क्यों नहीं छोड़ दंश ड्रॉप?
user20358

137
@ user20358: क्योंकि stash drop(" स्टैश लिस्ट से एक भी स्टैक्ड अवस्था को हटा दें। जब कोई <स्टैश> नहीं दिया जाता है, तो यह लेटेस्ट को हटा देता है। ... (...) " प्रश्न का उत्तर नहीं देता (" मैं सभी को कैसे हटा सकता हूं " मेरे Git एक ही बार में चुराते हैं? ")?
टाडेक सेप

11
- क्या स्वीकार किए जाते हैं जवाब का उल्लेख करने के अलावा git stash clear, पुष्टि करने के लिए करता है, तो सभी को मंजूरी दे दी, उपयोग -git stash list
कमल

2
@ jedd.ahyoung इसमें एक और 1,000 अपवोट होना चाहिए। के लिए प्रलेखन gitव्यावहारिक रूप से असंभव है! git-scm.com/docs/git-stash
Drenai

11
@Ryan: git help <command>प्रलेखन प्राप्त करने का सबसे अच्छा तरीका है (और, यह वास्तव में बहुत अच्छा है)। इस मामले में, git help stashस्पष्ट रूप से दिखाओ कि git stash clearक्या यह विलेख है (यह मुझे पहले तो एसओ के पास आने और उत्तर को उकसाने से नहीं रोकता था ... लेकिन यह आपको मेरे बारे में और अधिक बताता है git: डी)
मार्को मैसेंजियो

46

कोई स्लैश हटाने के दो तरीके हैं:

  1. अगर अब आप एक विशेष गुप्त कोष की जरूरत है, आप के साथ इसे हटा सकते हैं: $ git stash drop <stash_id>
  2. आप के साथ रेपो से अपने stashes के सभी नष्ट कर सकते हैं: $ git stash clear

सावधानी के साथ दोनों का उपयोग करें, शायद एक बार हटाए गए स्टैड्स को वापस करना मुश्किल है।

यहाँ संदर्भ लेख है


2
टर्मिनल को बंद करने का इससे कोई लेना-देना नहीं है। git एक डेमॉन नहीं है; यह केवल तभी चलता है जब आप इसे कहते हैं। यह पता नहीं है कि आपने टर्मिनल बंद कर दिया है।
डायलनयुंग

31

यह कमांड आपको सभी अटके हुए बदलावों को देखने में सक्षम बनाता है।

git stash list

यहाँ निम्नलिखित कमांड का उपयोग आपके सभी परिवर्तित परिवर्तनों को साफ़ करने के लिए किया गया है

git stash clear

अब अगर आप स्टैश एरिया से स्टैक्ड बदलावों में से एक को हटाना चाहते हैं

git stash drop stash@{index}   // here index will be shown after getting stash list.

नोट: git stash listआपको git के स्‍टैश क्षेत्र से सूचकांक प्राप्त करने में सक्षम बनाता है।


वर्थ का उल्लेख है कि विंडोज 10 का उपयोग करके कम से कम VSCode में एकीकृत टर्मिनल के लिए, यह git stash drop 'stash@{index}'एपोस्ट्रोफिस के साथ है।
ओरोल मिरो

13

मैं कुछ हालिया झड़पों को रखना चाहता था, लेकिन बाकी सब हटा दिया।

क्योंकि जब आप एक को छोड़ देते हैं, तो सभी स्टैम्ड पुनः प्राप्त हो जाते हैं, जबकि वास्तव में ऐसा करना आसान होता है। स्लैश @ {19} से पुराने सभी स्टैम्स को हटाने के लिए:

while git stash drop 'stash@{20}'; do true; done

क्या यह Git 2.11 में शुरू किए गए अनुक्रमित मूल्यों पर लागू होता है, जहां आप स्टैश सूची से 3 स्टैश का उपयोग git stash pop 3करने के बजाय संदर्भित कर सकते हैं ? मैं जानना चाहता था कि क्या हम whileसूचकांक मूल्यों का उपयोग करके लूप और ड्रॉप स्टैड्स का उपयोग कर सकते हैं ।
tom_mai78101

मुझे इस की सादगी पसंद है, अच्छा सुरुचिपूर्ण समाधान!
अधि।

3

मुझे एक और आवश्यकता थी जैसे कि केवल कुछ ही खामियों को दूर करना होगा, नीचे दिया गया कोड उस स्थिति में मददगार होगा।

#!/bin/sh
for i in `seq 5 8`
do
   git stash drop stash@{$i}
done

/ * 5 से 8 सूचकांक से हटा देगा * /


कोशिशfor iterator in `seq 5 8`; git stash drop stash@{$iterator}; done
क्रिस मैककोवन

3
ध्यान दें कि जब आप ड्रॉप करते हैं, तो शेष बचे चरण 1 स्थान पर चले जाते हैं। इसलिए यदि आप 5 से 8 को हटाना चाहते हैं, तो आपको चार बार या तो पीछे की गिनती करनी होगी या चार बार @ {5} को हटाना होगा। उदाहरण के लिए: for i in `seq 4`; do git stash drop 'stash@{5}'; done
ताना

@ChrisMcCowan आपके कोड को do
steezeburger

3

यदि आप नवीनतम स्‍टैश या किसी विशेष सूचकांक को हटाना चाहते हैं -

git stash ड्रॉप type_your_index

> git stash list

  stash@{0}: abc
  stash@{1}: xyz
  stash@{1}: pqr

> git stash drop 0

  Dropped refs/stash@{0}

> git stash list

  stash@{0}: xyz
  stash@{1}: pqr

यदि आप एक बार में सभी रोक हटाना चाहते हैं -

> git stash clear
>

> git stash list
>

चेतावनी : एक बार कर लेने के बाद आप अपने स्टैश को वापस नहीं ला सकते


1

40 दिनों से अधिक पुराने सभी स्‍तंभों को हटाने के लिए:

git reflog expire --expire-unreachable=40.days refs/stash

जोड़े --dry-runको देखने के लिए जो stashes नष्ट हो जाती हैं।

देखें https://stackoverflow.com/a/44829516/946850 एक विवरण और अधिक विस्तार के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.