गिट स्टैश पॉप और गिट स्टैश के बीच अंतर लागू होता है


1022

मैं git stash popकाफी समय से उपयोग कर रहा हूं । मुझे हाल ही में git stash applyकमांड के बारे में पता चला । जब मैंने इसे आज़माया, तो ऐसा ही लगा git stash pop

बीच क्या अंतर है git stash popऔर git stash apply?

जवाबों:


1626

git stash pop इसे लागू करने के बाद (सबसे ऊपरी, डिफ़ॉल्ट रूप से) दूर फेंक देता है, जबकि बाद में पुन: उपयोग के लिए git stash apply इसे स्टैश सूची में छोड़ देता है (या फिर आप git stash dropइसे ले सकते हैं)।

ऐसा तब तक होता है जब तक कि संघर्ष नहीं होते हैं git stash pop, जिस स्थिति में यह हकलाना नहीं हटाएगा, यह बिल्कुल वैसा ही व्यवहार करने के लिए छोड़ देगा git stash apply

इसे देखने का एक और तरीका है: git stash popहै git stash apply && git stash drop


117
नीचे @ briankip के उत्तर नोट के रूप में, अगर टकराव होने पर संघर्ष होते हैं, तो पॉप स्टैश को हटा नहीं देगा (और लागू होने जैसा ही व्यवहार करेगा)
काशीफल

ऐसा लगता है कि भले ही आपकी शाखा में अनियोजित परिवर्तन समान git stash popपरिणाम हैं, फिर भी आपको एक संघर्ष त्रुटि मिलेगी।
डिमप

79

इस उपयोगी लिंक को मिला जो अंतर बताता है, जैसा कि जॉन Zwinck ने कहा है और इसकी एक खामी है git stash pop

उदाहरण के लिए, मान लें कि आपके द्वारा किए गए अन्य परिवर्तनों के साथ आपका स्टैक्ड परिवर्तन संघर्ष है, जब से आपने पहली बार स्टैश बनाया है। पॉप और अप्लाय दोनों ही मर्ज संघर्ष रिज़ॉल्यूशन मोड को ट्रिगर करने में मदद करेंगे, जिससे आप इस तरह के संघर्षों को अच्छी तरह से हल कर सकते हैं ... और न ही स्टैश से छुटकारा मिलेगा, भले ही आप पॉप की उम्मीद कर रहे हों। चूंकि बहुत से लोग बस एक साधारण स्टैक होने की उम्मीद करते हैं, इसलिए यह अक्सर उन्हें बाद में गलती से उसी स्टैप को पॉप करने की ओर ले जाता है क्योंकि उन्हें लगा कि यह चला गया है।

लिंक: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/


6
जब एक पॉप वास्तव में विफल हो गया है, तब भी यह एक कमबैक है, भले ही यह पहली बार में ऐसा लगता हो।
अमलगोविनस

65

git stash popशीर्ष स्टैक्ड तत्व को लागू करता है और इसे स्टैक से निकालता है। git stash applyवही करता है, लेकिन इसे स्टाॅक स्टैक में छोड़ देता है।


42

इसे कार्रवाई में देखने से आपको अंतर समझने में बेहतर मदद मिल सकती है।

यह मानते हुए कि हम masterशाखा पर काम कर रहे हैं और एक फाइल hello.txtहै जिसमें "हैलो" स्ट्रिंग है।

चलो फ़ाइल को संशोधित करें और इसमें "दुनिया" स्ट्रिंग जोड़ें। अब आप एक छोटी सी बग को ठीक करने के लिए एक अलग शाखा में जाना चाहते हैं, जिसे आपने अभी-अभी पाया है, इसलिए आपको stashअपने परिवर्तनों की आवश्यकता है :

git stash

आप दूसरी शाखा में चले गए, बग को ठीक कर दिया और अब आप अपनी masterशाखा पर काम करना जारी रखने के लिए तैयार हैं , इसलिए आप popपरिवर्तन करें:

git stash pop

अब यदि आप अपने द्वारा प्राप्त की गई सामग्री की समीक्षा करने का प्रयास करेंगे:

$ git stash show -p
No stash found.

हालाँकि, यदि आप git stash applyइसके बजाय उपयोग करते हैं, तो आपको स्टैस्ड सामग्री मिल जाएगी, लेकिन आप इसे बनाए रखेंगे:

$ git stash show -p
diff --git a/hello.txt b/hello.txt
index e965047..802992c 100644
--- a/hello.txt
+++ b/hello.txt
@@ -1 +1 @@
-Hello
+Hello world

तो popबस स्टैक पॉप की तरह है - यह वास्तव में तत्व को हटा देता है एक बार जब यह पॉप हो जाता है, जबकि applyअधिक बार झांकना पसंद होता है ।


5

में git गुप्त कोष में एक भंडारण क्षेत्र है, जहां वर्तमान बदली हुई फ़ाइलें ले जाया जा सकता है।

stashक्षेत्र उपयोगी है जब आप gitरिपॉजिटरी से कुछ परिवर्तन खींचना चाहते हैं और gitरेपो में उपलब्ध कुछ पारस्परिक फ़ाइलों में कुछ परिवर्तनों का पता लगाया है ।

git stash apply //apply the changes without removing stored files from stash area.

git stash pop  // apply the changes as well as remove stored files from stash area.

नोट: - git applyकेवल स्लैश क्षेत्र से परिवर्तन git popलागू करें और साथ ही stashक्षेत्र से परिवर्तन हटा दें ।


1

Git Stash Pop vs applyवर्किंग

यदि आप अपने शीर्ष अटके हुए बदलावों को वर्तमान गैर-चरणबद्ध परिवर्तनों पर लागू करना चाहते हैं और साथ ही उस टकराव को हटा सकते हैं, तो आपको जाना चाहिए git stash pop

# apply the top stashed changes and delete it from git stash area.
git stash pop  

लेकिन अगर आप अपने शीर्ष क्रम में किए गए परिवर्तनों को बिना हटाए वर्तमान में किए गए परिवर्तन पर लागू करना चाहते हैं, तो आपको इसके लिए जाना चाहिए git stash apply

नोट: आप इस मामले को Stackकक्षा pop()और peek()विधियों के साथ संबंधित कर सकते हैं , जहां पॉप अप घटाव (शीर्ष = शीर्ष -1) से बदल जाता है, लेकिन peek()केवल शीर्ष तत्व प्राप्त करने में सक्षम है।

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