खोज…
वाक्य - विन्यास
-
git stash list [<options>]
-
git stash show [<stash>]
-
git stash drop [-q|--quiet] [<stash>]
-
git stash ( pop | apply ) [--index] [-q|--quiet] [<stash>]
-
git stash branch <branchname> [<stash>]
-
git stash [save [-p|--patch] [-k|--[no-]keep-index] [-q|--quiet] [-u|--include-untracked] [-a|--all] [<message>]]
-
git stash clear
-
git stash create [<message>]
-
git stash store [-m|--message <message>] [-q|--quiet] <commit>
पैरामीटर
पैरामीटर | विवरण |
---|---|
प्रदर्शन | स्टैश में दर्ज परिवर्तनों को स्टैक्ड अवस्था और उसके मूल माता-पिता के बीच अंतर के रूप में दिखाएं। जब कोई <st> नहीं दिया जाता है, तो नवीनतम दिखाता है। |
सूची | वर्तमान में आपके पास मौजूद स्टैच्यू को सूचीबद्ध करें। प्रत्येक स्टश को इसके नाम के साथ सूचीबद्ध किया गया है (उदाहरण स्टैश @ {0} नवीनतम स्टश है, स्टैश @ {1} इससे पहले वाला है, आदि), स्टैश का नाम उस समय था जो स्टैश बनाया गया था, और छोटा था कमिट का वर्णन स्टाश पर आधारित था। |
पॉप | स्टैश सूची से एक भी धराशायी राज्य को हटा दें और इसे वर्तमान कार्यशील स्थिति के शीर्ष पर लागू करें। |
लागू | pop तरह, लेकिन स्टेट को स्टैश सूची से न हटाएं। |
स्पष्ट | सभी स्टैक्ड अवस्थाओं को निकालें। ध्यान दें कि उन राज्यों को तब छंटाई के अधीन किया जाएगा, और पुनर्प्राप्त करना असंभव हो सकता है। |
ड्रॉप | स्टैश सूची से एकल स्टेडड स्थिति निकालें। जब कोई <st> नहीं दिया जाता है, तो यह नवीनतम को हटा देता है। यानी स्टैश @ {0}, अन्यथा <स्टैश> फॉर्म स्लैश @ {<रिविजन]} का वैध स्लैश लॉग संदर्भ होना चाहिए। |
सृजन करना | एक स्टैश बनाएं (जो एक नियमित रूप से प्रतिबद्ध वस्तु है) और उसका ऑब्जेक्ट नाम लौटाएं, रेफ नेमस्पेस में कहीं भी संग्रहीत किए बिना। यह स्क्रिप्ट के लिए उपयोगी माना जाता है। यह संभवतः वह कमांड नहीं है जिसका आप उपयोग करना चाहते हैं; ऊपर "सहेजें" देखें। |
दुकान | स्टैश रिफॉल को अपडेट करते हुए, दिए गए स्टश को git स्टैश क्रिएट (जो कि एक झूलता हुआ मर्ज कमिट है) के माध्यम से स्टोर करें। यह स्क्रिप्ट के लिए उपयोगी माना जाता है। यह संभवतः वह कमांड नहीं है जिसका आप उपयोग करना चाहते हैं; ऊपर "सहेजें" देखें। |
टिप्पणियों
स्टैशिंग हमें किसी भी जानकारी को खोए बिना एक स्वच्छ कार्य निर्देशिका बनाने की अनुमति देता है। फिर, कुछ अलग और / या शाखाओं को स्विच करने के लिए काम करना शुरू करना संभव है।
स्टैशिंग क्या है?
जब किसी प्रोजेक्ट पर काम कर रहे हों, तो हो सकता है कि आप एक फीचर ब्रांच चेंज के माध्यम से आधी-अधूरी हो जाएं जब बग को मास्टर के खिलाफ उठाया जाता है। आप अपना कोड बनाने के लिए तैयार नहीं हैं, लेकिन आप अपने परिवर्तनों को खोना नहीं चाहते हैं। यह वह git stash
है जहाँ git stash
काम में आता है।
अपने अनछुए परिवर्तनों को दिखाने के लिए एक शाखा पर git status
चलाएँ:
(master) $ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: business/com/test/core/actions/Photo.c
no changes added to commit (use "git add" and/or "git commit -a")
फिर इन परिवर्तनों को एक स्टैक में सहेजने के लिए git stash
चलाएं:
(master) $ git stash
Saved working directory and index state WIP on master:
2f2a6e1 Merge pull request #1 from test/test-branch
HEAD is now at 2f2a6e1 Merge pull request #1 from test/test-branch
यदि आपने अपनी वर्किंग डायरेक्टरी में फाइलें जोड़ी हैं, तो इन्हें स्टैक्ड भी किया जा सकता है। आपको बस उन्हें पहले मंचित करने की आवश्यकता है।
(master) $ git stash
Saved working directory and index state WIP on master:
(master) $ git status
On branch master
Untracked files:
(use "git add <file>..." to include in what will be committed)
NewPhoto.c
nothing added to commit but untracked files present (use "git add" to track)
(master) $ git stage NewPhoto.c
(master) $ git stash
Saved working directory and index state WIP on master:
(master) $ git status
On branch master
nothing to commit, working tree clean
(master) $
आपकी कार्यशील निर्देशिका अब आपके द्वारा किए गए परिवर्तनों से साफ है। आप इसे पुन: चलाने की git status
अनुसार देख सकते हैं:
(master) $ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean
आखिरी गुप्त कोष में लागू करने के लिए चलाने के git stash apply
(साथ ही, आप आवेदन कर सकते हैं और निकालने के आखिरी के साथ बदल रखे git stash pop
):
(master) $ git stash apply
On branch master
Your branch is up-to-date with 'origin/master'.
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: business/com/test/core/actions/Photo.c
no changes added to commit (use "git add" and/or "git commit -a")
ध्यान दें, हालांकि, उस स्ट्रैसिंग को याद नहीं है कि आप जिस शाखा पर काम कर रहे थे। उपरोक्त उदाहरणों में, उपयोगकर्ता मास्टर पर ज़ोर दे रहा था। यदि वे देव शाखा में जाते हैं, तो देव , और रन git stash apply
, अंतिम शाखा देव शाखा पर लगाई जाती है।
(master) $ git checkout -b dev
Switched to a new branch 'dev'
(dev) $ git stash apply
On branch dev
Changes not staged for commit:
(use "git add <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
modified: business/com/test/core/actions/Photo.c
no changes added to commit (use "git add" and/or "git commit -a")
स्टैश बनाएं
कार्यशील निर्देशिका की वर्तमान स्थिति और सूचकांक को (स्टैगिंग क्षेत्र के रूप में भी जाना जाता है) बचाएं।
git stash
स्टैश में मौजूद सभी अनट्रैक की गई फ़ाइलों को शामिल करने के लिए --include-untracked
या -u
ध्वज का उपयोग करें।
git stash --include-untracked
बाद में इसे आसानी से पहचाने जाने योग्य बनाने के लिए अपने संदेश के साथ एक संदेश शामिल करें
git stash save "<whatever message>"
वर्तमान स्थिति में स्टेजिंग क्षेत्र को छोड़ने के लिए --keep-index
the --keep-index
या -k
झंडे का उपयोग करें।
git stash --keep-index
सहेजे गए सूची की सूची
git stash list
यह स्टैक के सभी क्रमों को रिवर्स कालानुक्रमिक क्रम में सूचीबद्ध करेगा।
आपको एक सूची मिलेगी जो कुछ इस तरह दिखती है:
stash@{0}: WIP on master: 67a4e01 Merge tests into develop
stash@{1}: WIP on master: 70f0d95 Add user role to localStorage on user login
आप इसके नाम से विशिष्ट स्टैश का संदर्भ ले सकते हैं, उदाहरण के लिए stash@{1}
।
दिखावा करना
अंतिम चरण में सहेजे गए परिवर्तनों को दिखाता है
git stash show
या एक विशिष्ट छप
git stash show stash@{n}
विशिष्ट स्टैश के लिए सहेजे गए परिवर्तनों की सामग्री दिखाने के लिए
git stash show -p stash@{n}
स्टैश निकालें
सभी स्टैश निकालें
git stash clear
आखिरी झंझट को दूर करता है
git stash drop
या एक विशिष्ट छप
git stash drop stash@{n}
लागू करें और हटा दें
अंतिम स्टैश लगाने और उसे स्टैक से हटाने के लिए - टाइप करें:
git stash pop
विशिष्ट स्टेश लगाने और स्टैक से इसे हटाने के लिए - टाइप करें:
git stash pop stash@{n}
इसे हटाए बिना स्टेश लागू करें
स्टैक से हटाए बिना अंतिम स्टैश को लागू करता है
git stash apply
या एक विशिष्ट छप
git stash apply stash@{n}
पहले से पुनर्प्राप्त स्टाश से बदल रहा है
Git stash चलाने के बाद अपना सबसे हालिया स्टैश पाने के लिए, का उपयोग करें
git stash apply
अपने स्टैच की सूची देखने के लिए, उपयोग करें
git stash list
आपको एक सूची मिलेगी जो कुछ इस तरह दिखती है
stash@{0}: WIP on master: 67a4e01 Merge tests into develop
stash@{1}: WIP on master: 70f0d95 Add user role to localStorage on user login
उस नंबर के साथ पुनर्स्थापित करने के लिए एक अलग git स्टैश चुनें, जो आपके इच्छित स्टैश के लिए दिखाई देता है
git stash apply stash@{2}
आंशिक तबाही
यदि आप अपने काम करने के सेट में केवल कुछ अंतरों को रोकना चाहते हैं, तो आप एक आंशिक स्लैश का उपयोग कर सकते हैं।
git stash -p
और फिर अंतःक्रियात्मक रूप से चयन करें कि कौन सी हॅक को स्लैश करना है।
2.13.0 संस्करण के रूप में, आप इंटरेक्टिव मोड से भी बच सकते हैं और नए पुश कीवर्ड का उपयोग करके एक पाथस्पेक के साथ एक आंशिक स्लैश बना सकते हैं।
git stash push -m "My partial stash" -- app.config
चेकआउट के साथ एक स्लैश का हिस्सा लागू करें
आपने एक स्टैश बनाया है और उस स्टैश में केवल कुछ फाइलों को चेकआउट करना चाहते हैं।
git checkout stash@{0} -- myfile.txt
इंटरएक्टिव स्ट्रैसिंग
स्टैशिंग आपकी कार्यशील निर्देशिका की गंदी स्थिति को ले जाता है - अर्थात, आपकी संशोधित ट्रैक की गई फ़ाइलें और चरणबद्ध परिवर्तन - और इसे अधूरे परिवर्तनों के ढेर पर सहेजता है जिसे आप किसी भी समय पुन: लागू कर सकते हैं।
केवल संशोधित फ़ाइलों को नष्ट करना:
मान लीजिए कि आप मंचन की गई फ़ाइलों को स्टैश नहीं करना चाहते हैं और केवल संशोधित फ़ाइलों को ही स्टैश करें ताकि आप उपयोग कर सकें:
git stash --keep-index
जो केवल संशोधित फ़ाइलों को स्टैश करेगा।
अनट्रैक की गई फ़ाइलों को स्टैशिंग करना:
स्टैश कभी भी अनट्रैक की गई फाइलों को सेव नहीं करता है यह केवल संशोधित और स्टेज की गई फाइलों को ही चुराता है। तो मान लीजिये अगर आपको अनट्रेक्टेड फाइल्स को भी स्टैश करना है तो आप इसका इस्तेमाल कर सकते हैं:
git stash -u
यह अनट्रैक, मंचित और संशोधित फ़ाइलों को ट्रैक करेगा।
केवल कुछ विशेष परिवर्तनों को रोकें:
मान लें कि आपको फ़ाइल से केवल कुछ भाग या केवल कुछ फ़ाइलों को केवल सभी संशोधित और स्टैक्ड फ़ाइलों से ही स्टैश करना है, तो आप इसे इस तरह से कर सकते हैं:
git stash --patch
Git सब कुछ जो संशोधित किया गया है, उसे स्टैश नहीं करेगा, बल्कि आपको अंतःक्रियात्मक रूप से संकेत देगा कि आप किन परिवर्तनों को स्टैश करना चाहते हैं और जिन्हें आप अपनी कार्यशील निर्देशिका में रखना चाहते हैं।
अपने कार्य को दूसरी शाखा में ले जाएं
अगर काम करते हुए आपको एहसास होता है कि आप गलत शाखा पर हैं और आपने अभी तक कोई कमिट नहीं बनाया है, तो आप आसानी से अपने काम को स्टैशिंग का उपयोग करके सही शाखा में ले जा सकते हैं:
git stash
git checkout correct-branch
git stash pop
याद रखें git stash pop
लास्ट stash लागू करेगा और इसे stash सूची से हटा देगा। सूची में छप रखने के लिए और केवल उस शाखा पर लागू करें जिसका आप उपयोग कर सकते हैं:
git stash apply
गिरा हुआ उबरना
आप केवल बस पॉप है और टर्मिनल अभी भी खुला है, तो भी आप द्वारा मुद्रित हैश मान होगा git stash pop
स्क्रीन पर:
$ git stash pop
[...]
Dropped refs/stash@{0} (2ca03e22256be97f9e40f08e6d6773c7d41dbfd1)
(ध्यान दें कि git stash ड्रॉप भी एक ही लाइन पैदा करता है।)
अन्यथा, आप इसका उपयोग करके इसे पा सकते हैं:
git fsck --no-reflog | awk '/dangling commit/ {print $3}'
यह आपको आपके कमिट ग्राफ के सुझावों पर सभी कमिट्स दिखाएगा जो अब किसी भी शाखा या टैग से संदर्भित नहीं हैं - हर खोई हुई कमिट, जिसमें आपके द्वारा बनाए गए हर स्टैट कमिट भी शामिल हैं, उस ग्राफ में कहीं न कहीं होंगे।
सबसे आसान तरीका है कि आप जो gitk
चाहते हैं, वह उस लिस्ट को पास करना है।
gitk --all $( git fsck --no-reflog | awk '/dangling commit/ {print $3}' )
यह एक रिपॉजिटरी ब्राउज़र लॉन्च करेगा, जो आपको रिपॉजिटरी में हर एक कमिटमेंट दिखाएगा , भले ही वह पहुंच योग्य हो या नहीं।
आप की जगह ले सकता gitk
की तरह कुछ के साथ वहाँ git log --graph --oneline --decorate
यदि आप एक अलग जीयूआई एप्लिकेशन पर कंसोल पर एक अच्छा ग्राफ पसंद करते हैं।
स्टैश कमिट करने के लिए, इस फॉर्म के कमिट मैसेज देखें:
Somebranch पर WIP: कुछ पुराने कमिट मैसेज को कमिट करें
एक बार जब आप चाहते हैं कि हैश का पता चल जाए, तो आप इसे एक स्लैश के रूप में लागू कर सकते हैं:
git stash apply $stash_hash
या आप जिस रुचि में हैं, उसके लिए शाखाएँ बनाने के लिए gitk
में संदर्भ मेनू का उपयोग कर सकते हैं। जब आप पूरी कर लें, तो उन शाखाओं को फिर से उड़ा दें।