गिट शेल्व बनाम स्टैश


275

मैं shelveगिट के पहलू से बहुत अपरिचित हूं । यदि stashअधूरा काम एक तरफ रखने के लिए उपयोग किया जाता है shelveतो क्या है ? आप इसके लिए क्या उपयोग करेंगे?

अपडेट प्रोजेक्ट पर उदाहरण के लिए (VCS मेनू से)

यहां छवि विवरण दर्ज करें

एक मिलेगा (आइडिया 2019.2 में)

यहां छवि विवरण दर्ज करें


14
shelveएक git कमांड नहीं है। इस प्रश्न का संदर्भ क्या है, ये शब्द कहां से आ रहे हैं? shelveकुछ अन्य उपकरणों में मौजूद है, लेकिन यह git का हिस्सा नहीं है।
जोनाह

2
Git stash shelvebzr, hg, आदि के समान है । क्या आप कुछ git इंटरऑपरेबिलिटी पैकेज की बात कर रहे हैं?
ड्रेरोबर्ट्ज़

3
स्वीकृत उत्तर की तुलना में अधिक अपवोट संभवतः पुष्टि करता है, यह प्रश्न वैध है और '' शेल्व '' शब्द समान रूप से एक गलत आदेश के रूप में गलत समझा गया है। पूछने के लिए धन्यवाद, यह मेरा संदेह भी था (आईडीईए से भी)।
प्रवीणदास

जवाबों:


266

git shelve Git में मौजूद नहीं है।

केवल git stash:

  • जब आप वर्किंग डायरेक्टरी और इंडेक्स की वर्तमान स्थिति को रिकॉर्ड करना चाहते हैं, लेकिन एक क्लीन वर्किंग डाइरेक्टरी में वापस जाना चाहते हैं।
  • जो आपके स्थानीय संशोधनों को दूर करता है और HEAD कमिट से मिलान करने के लिए वर्किंग डायरेक्टरी को वापस करता है।

आपके पास एक शाखा में संशोधनों को अलग करने के लिए 2008 पुराना प्रोजेक्ट गिट शेल्व था, लेकिन यह आजकल बहुत उपयोगी नहीं होगा।

जैसा कि इंटेलीज आईडीईए शेल्व डायलॉग में प्रलेखित किया गया है, " शेलिंग एंड अनशैलिंग " फीचर वीसीएस (वर्जन कंट्रोल सिस्टम टूल) से जुड़ा नहीं है, लेकिन आईडीई खुद के लिए, अस्थायी रूप से लंबित परिवर्तनों को संग्रहीत करने के लिए, जो आपने अभी तक चैंजिस्ट में नहीं किया है।

ध्यान दें कि Git 2.13 (Q2 2017) के बाद से, अब आप व्यक्तिगत फ़ाइलों को भी मिटा सकते हैं


73
मैं अवधारणा को गलत समझा। मुझे लगा कि यह एक Git कमांड था जब वास्तव में यह IntelliJ IDEA की तीसरी पार्टी है। मुझे इसके लिए git डॉक्स नहीं मिले इसलिए मुझे लगा कि मुझे कुछ याद आ रहा है। jetbrains.com/idea/help/shelving-and-unshelving-changes.html
एडगर मार्टिनेज

2
आपका डॉक लिंक इंगित करता है कि "अलमारियां" केवल इंटेलीजे आईडीई द्वारा प्रबंधित परिवर्तनों (पैच) के सेट हैं, "स्टैच" को अनलिंक करें जो कि गिट द्वारा प्रबंधित मानक चीजें हैं। इसलिए अलमारियों से बचें।
बारबरा.पोस्ट

2
@ जेरी चिन शेल्व आपके मामले में स्टैश से बेहतर है। काश जीइट में मौजूद होता। वेबस्टॉर्म रैम को बेकार कर देता है। यह उपयोगी होगा यदि git था तो हम इसे cmd लाइन में चला सकते हैं
digender mahara

2
एक सामान्य उपयोग का मामला है कि शेल्व में वह स्लैश है जो संबोधित नहीं करता है - समस्याग्रस्त सहकर्मियों / कंपनी प्रथाओं से निपटना। पूर्ण कचरा के लिए अपने भंडार में जोड़ा जाना संभव है और किसी के पागलपन के कारण इसे 'ठीक' करने के लिए कोषेर नहीं होना चाहिए। विकल्प कुछ ऐसा है git stash && <your actual command> && git stash popलेकिन वह बेकार है। ऑटो-शेल्व और लागू करना हमारी आवश्यकता के करीब है।
smaudet

1
@VonC समान नहीं है - मेरे पास एक उपयोग का मामला है जहां मैं जिन परियोजनाओं का उपयोग कर रहा हूं उनमें ऐसी सेटिंग्स हैं जिनकी मुझे आवश्यकता है, क्योंकि वे 'मानक' नहीं हैं। और आधा दर्जन अन्य उपयोग के मामले मैं स्थानीय विकास बनाम देव / परीक्षण / ठेस के लिए निर्माण फाइलों को संशोधित करने आदि जैसी चीजों को शामिल करने के लिए आया हूं।
smaudet

187

JetBrains IDE का Git के साथ उपयोग करते समय, "स्टैशिंग और अनस्टेसिंग क्रियाओं को ठंडे बस्ते में डालने और अनसुने करने के अलावा समर्थन किया जाता है। इन विशेषताओं में बहुत कुछ होता है; प्रमुख अंतर यह है कि पैच को उत्पन्न और लागू किया जाता है। शेलवे व्यक्तिगत फ़ाइलों या गुच्छा के साथ काम कर सकता है। फ़ाइलों की, जबकि स्टैश केवल एक बार में परिवर्तित फ़ाइलों के एक पूरे समूह के साथ काम कर सकता है। यहां उनके बीच के मतभेदों पर कुछ और विवरण हैं। "


10
ऐसा लगता है कि शेल स्केच गिट स्टैश की तुलना में अधिक लचीला है ।
दिमित्री डेविडॉव

12
@DmitryDavydov git stash -pदोनों को ट्रम्प करता है। दुर्भाग्य से केवल कमांड लाइन में।
Vee

1
@Vee हाँ यह कार्यक्षमता के मामले में बहुत समान है, जानकारी के लिए धन्यवाद।
दिमित्री डेविडॉव

10
दरअसल, Git 2.13 (Q2 2017) के बाद से आप अलग-अलग फाइलों को स्टैश कर सकते हैं ... और पढ़ें
kyb

5
मैंने पाया टांड़ आप परिवर्तन का एक पैच है जब कि आप हर बार है कि आप ऑटो करना चाहते हैं, उदाहरण के लिए प्रलेखन उत्पन्न लागू करना चाहते हैं बहुत उपयोगी। शेल्व .idea / shelve के भीतर एक फ़ाइल बनाएगा और आप इसे VCS में जोड़ सकते हैं और इसे अपनी सभी टीम के साथ साझा कर सकते हैं ताकि वे उन परिवर्तनों को लागू कर सकें और समान कार्य चला सकें।

63

पिछले उत्तरों के अलावा मेरे लिए एक महत्वपूर्ण बात है:

shelveजेटब्रेन्स उत्पादों सुविधा (जैसे है WebStorm, PhpStorm, PyCharm, आदि)। यह .idea/shelfडायरेक्टरी में शेल्ड फाइल्स रखता है ।

stashgitविकल्पों में से एक है । यह .gitनिर्देशिका के अंतर्गत अटकी हुई फाइलें डालता है ।


2
इस महत्वपूर्ण प्रश्न को स्पष्ट करने के लिए धन्यवाद।
अमेरलिसिया

4

यदि मैं अपने परिवर्तन कहीं और साझा नहीं कर रहा हूं, तो मैं उन पर प्रहार करने के बजाय परिवर्तनों को रोकना पसंद करूंगा।

स्टैशिंग एक विशेषता है और आपको किसी फ़ाइल के अंदर विशिष्ट फ़ाइलों या परिवर्तनों का चयन करने का विकल्प नहीं देता है। ठंडे बस्ते में डालने कर सकते हैं, लेकिन यह एक आईडीई-विशिष्ट विशेषता है, न कि गिट फीचर:

यहां छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं कि मैं अपने शेल्व पर शामिल करने के लिए कौन सी फाइलें / लाइनें निर्दिष्ट करने में सक्षम हूं। ध्यान दें कि मैं ऐसा नहीं कर सकता हूँ।

आईडीई में अलमारियों का उपयोग करने से सावधान रहें, आपके पैच की पोर्टेबिलिटी को सीमित कर सकते हैं क्योंकि उन परिवर्तनों को एक .गित फ़ोल्डर में संग्रहीत नहीं किया जाता है।

कुछ उपयोगी लिंक:

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