मैं git stash popकाफी समय से उपयोग कर रहा हूं । मुझे हाल ही में git stash applyकमांड के बारे में पता चला । जब मैंने इसे आज़माया, तो ऐसा ही लगा git stash pop।
बीच क्या अंतर है git stash popऔर git stash apply?
मैं git stash popकाफी समय से उपयोग कर रहा हूं । मुझे हाल ही में git stash applyकमांड के बारे में पता चला । जब मैंने इसे आज़माया, तो ऐसा ही लगा git stash pop।
बीच क्या अंतर है git stash popऔर git stash apply?
जवाबों:
git stash pop इसे लागू करने के बाद (सबसे ऊपरी, डिफ़ॉल्ट रूप से) दूर फेंक देता है, जबकि बाद में पुन: उपयोग के लिए git stash apply इसे स्टैश सूची में छोड़ देता है (या फिर आप git stash dropइसे ले सकते हैं)।
ऐसा तब तक होता है जब तक कि संघर्ष नहीं होते हैं git stash pop, जिस स्थिति में यह हकलाना नहीं हटाएगा, यह बिल्कुल वैसा ही व्यवहार करने के लिए छोड़ देगा git stash apply।
इसे देखने का एक और तरीका है: git stash popहै git stash apply && git stash drop।
git stash popपरिणाम हैं, फिर भी आपको एक संघर्ष त्रुटि मिलेगी।
इस उपयोगी लिंक को मिला जो अंतर बताता है, जैसा कि जॉन Zwinck ने कहा है और इसकी एक खामी है git stash pop।
उदाहरण के लिए, मान लें कि आपके द्वारा किए गए अन्य परिवर्तनों के साथ आपका स्टैक्ड परिवर्तन संघर्ष है, जब से आपने पहली बार स्टैश बनाया है। पॉप और अप्लाय दोनों ही मर्ज संघर्ष रिज़ॉल्यूशन मोड को ट्रिगर करने में मदद करेंगे, जिससे आप इस तरह के संघर्षों को अच्छी तरह से हल कर सकते हैं ... और न ही स्टैश से छुटकारा मिलेगा, भले ही आप पॉप की उम्मीद कर रहे हों। चूंकि बहुत से लोग बस एक साधारण स्टैक होने की उम्मीद करते हैं, इसलिए यह अक्सर उन्हें बाद में गलती से उसी स्टैप को पॉप करने की ओर ले जाता है क्योंकि उन्हें लगा कि यह चला गया है।
लिंक: http://codingkilledthecat.wordpress.com/2012/04/27/git-stash-pop-considered-harmful/
इसे कार्रवाई में देखने से आपको अंतर समझने में बेहतर मदद मिल सकती है।
यह मानते हुए कि हम 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अधिक बार झांकना पसंद होता है ।
में 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क्षेत्र से परिवर्तन हटा दें ।
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()केवल शीर्ष तत्व प्राप्त करने में सक्षम है।