जवाबों:
सबसे हालिया कड़ी देखें:
git stash show -p
देखें एक मनमाना टकराव:
git stash show -p stash@{1}
से git stash
manpages:
डिफ़ॉल्ट रूप से, कमांड डिफॉल्ट को दिखाता है, लेकिन यह git diff के लिए जाने जाने वाले किसी भी प्रारूप को स्वीकार करेगा (जैसे, git stash show -p stash @ {1} को पैच के रूप में दूसरा सबसे नया स्टैश देखने के लिए)।
stash@{0}
डिफ़ॉल्ट है; यदि आपको पिछली स्तंभों को देखना है तो आपको केवल एक तर्क की आवश्यकता है।
{0}
।
-p
खड़ा है?
सबसे हालिया कड़ी देखने के लिए:
git stash show -p
एक मनमाना संघर्ष देखने के लिए:
git stash show -p stash@{1}
इसके अलावा, मैं किसी भी शाखा के साथ टकराव की तुलना करने के लिए गिट भिन्न का उपयोग करता हूं।
आप उपयोग कर सकते हैं:
git diff stash@{0} master
शाखा मास्टर की तुलना में सभी परिवर्तनों को देखने के लिए।
या आप उपयोग कर सकते हैं:
git diff --name-only stash@{0} master
केवल आसान फ़ाइल नाम खोजने के लिए।
git diff stash@{0} master
, आपको वर्तमान मास्टर के खिलाफ अपने स्टैश का एक अंतर मिलता है (जिसमें स्टैश के बाद मास्टर पर किया गया काम भी शामिल है। बनाया गया था), न कि फाइलें / लाइनें जो कि स्टैश बदल जाएंगी, जो कि सवाल है।
git difftool --tool=... stash@{0} HEAD
git diff stash@{0}^ stash@{0}
git diff stash@{0} master -- filename
किसी विशिष्ट फ़ाइल में परिवर्तन प्राप्त करने के लिए फ़ाइल नाम जोड़ सकते हैं ।
यदि आपके द्वारा अटके हुए परिवर्तन इस आधार पर बदल गए हैं, तो यह कमांड उपयोगी हो सकती है:
git diff stash@{0}^!
यह तुलना के आधार पर किए गए संघर्ष की तुलना करता है।
~/.gitconfig
:laststash = diff stash@{0}^!
git difftool stash^!
आखिरी git difftool stash HEAD
अगर आपका वर्किंग ट्री गंदा है , तो आप पहले गंदे काम करने वाले पेड़ से टकराकर उसकी तुलना कर सकते हैं, और फिर उसकी तुलना डंडे से कर सकते हैं। बाद में, आप गंदे काम करने वाले पेड़ के साथ प्रतिबद्ध कर सकते हैं (क्योंकि आप चाहते हैं कि आपके कमिट लॉग में वह गंदा काम न हो)।
आप दो दृष्टिकोणों की एक दूसरे के साथ तुलना करने के लिए निम्नलिखित दृष्टिकोण का उपयोग कर सकते हैं (जिस स्थिति में आप पहली बार किसी एक स्टैम्प को पॉप करते हैं)।
अपना गंदा काम करने वाला पेड़ लगाएँ:
git add .
git commit -m "Dirty commit"
उस प्रतिबद्धता के साथ टकराव को दूर करें:
git diff HEAD stash@{0}
फिर, बाद में, आप कमिट वापस कर सकते हैं, और इसे काम कर रहे डायर में वापस रख सकते हैं:
git reset --soft HEAD~1
git reset .
अब आप अपने स्टाफ़ के साथ गंदे काम करने वाले पेड़ को अलग कर चुके हैं, और शुरू में आप जहां थे वहां वापस आ गए हैं।
git stash show -l
। क्या यह काम करने वाली (गंदी) कॉपी के खिलाफ नवीनतम कड़ी है? बिना पाने के आप इसका उपयोग कैसे करते हैं error: switch l requires a value
?
git stash show -l
। जैसे कि यह आपके लिए काम क्यों नहीं करता है, मैं केवल अनुमान लगा सकता हूं कि आप पुराने संस्करण पर हो सकते हैं? मैं git v2.20.1 पर हूं, और यह बिना त्रुटियों के त्रुटिपूर्ण काम करता है।
@ मैग्ने का उत्तर केवल (बहुत देर से) तारीख है, जो प्रश्न की सबसे अधिक लचीली / उपयोगी व्याख्या का उत्तर देता है, लेकिन इसकी निष्पक्ष आवश्यकता से अधिक जटिल है। कमिट करने और रीसेट करने के बजाय, बस अपनी वर्किंग कॉपी को स्टैश करें, तुलना करें, फिर अनस्टैश करें।
git stash save "temp"
git diff stash@{0} stash@{1}
git stash pop
यह आपको स्टैस स्टैक के शीर्ष और आपके काम करने वाले फ़ोल्डर के बीच के अंतर को अस्थायी रूप से आपके काम करने वाले फ़ोल्डर में बदलाव करके दिखाता है, मूल स्टैक के शीर्ष (stash @ {0}) बन जाते हैं, जो मूल शीर्ष को नीचे ले जाता है (stash @ {1}) ) तब 'नए सेट' की स्थिति में मूल शीर्ष का उपयोग करने की तुलना करना ताकि आप अपने वर्तमान काम के शीर्ष पर इसे लागू करने के परिणामस्वरूप होने वाले परिवर्तनों को देखेंगे।
"लेकिन क्या होगा अगर मेरे पास कोई मौजूदा काम नहीं है?" फिर आप सामान्य उबाऊ मामले में हैं। बस @ अंबर के उत्तर का उपयोग करें
git stash show
या @ czerasz का जवाब
git diff stash@{0}
या स्वीकार करते हैं कि तेज और अस्थिर वैसे भी तेज और आसान है, बस परिवर्तनों को अनस्टैश करें और उनका निरीक्षण करें। यदि आप उन्हें पल में फेंकना नहीं चाहते हैं (वर्तमान सूचकांक / कार्य फ़ोल्डर परिवर्तन) दूर। पूरी तरह से
git stash apply
git diff
git reset
git checkout
git stash save -u
यह मेरे लिए git संस्करण 1.8.5.2 पर काम करता है:
git diff stash HEAD
git stash apply
।
बस मामले में, काम करने वाले पेड़ में एक फाइल की तुलना करने और स्टैश में, नीचे दिए गए कमांड का उपयोग करें
git diff stash@{0} -- fileName (with path)
यदि आपके पास भिन्न उपकरण हैं (जैसे तुलना से परे)
git difftool stash HEAD
git stash apply
।
HEAD
। मैं HEAD को हटाने के लिए @ yerlilbilgin के उत्तर को संशोधित कर सकता था, लेकिन मुझे लगता है कि कोई भी व्यक्ति जो git का उपयोग करता है, वह उस भाग का पता लगा सकता है और मुझे उत्तर को लंबा करने से यह कम पठनीय होगा। @Yerlibilgin पर कोई दोष नहीं।
बिना किसी चीज़ को आगे बढ़ाए ऐसा करने का एक तरीका है कि इस तथ्य का फायदा उठाया जाए कि patch
पढ़ सकते हैं git diff's (एकीकृत रूप से भिन्न होता है)
git stash show -p | patch -p1 --verbose --dry-run
यह आपको एक कदम-दर-चरण पूर्वावलोकन दिखाएगा कि पैच आमतौर पर क्या करेगा। इसके अतिरिक्त लाभ यह है कि पैच खुद को काम करने वाले पेड़ को पैच लिखने से रोक नहीं पाएगा, अगर किसी कारण से आपको वास्तव में कमिटिंग-से-संशोधित करने के बारे में चुप रहने की आवश्यकता है, तो आगे बढ़ें और हटाएं-dry- क्रिया निर्देशों का पालन करें और पालन करें।
इस सूत्र में और इस एक में मैंने जो सीखा है, उसे जोड़ते हुए , जब मैं देखना चाहता हूं कि "स्टैश के अंदर क्या है", मैं पहली बार दौड़ता हूं:
git stash show stash@{0}
यह दिखाएगा कि क्या फ़ाइलों को संशोधित किया गया था। फिर, मल्टिफ्टफूल में एक अच्छा दृश्य प्राप्त करने के लिए, मैं करता हूं:
git difftool --dir-diff stash@{0} stash@{0}^
यह अपने माता-पिता के खिलाफ दिए गए टकराव के समय सभी अंतरों को प्रदर्शित करेगा।
आप Meld के~/.gitconfig
साथ, उदाहरण के लिए अलग टूल को कॉन्फ़िगर कर सकते हैं :
...
[diff]
tool = meld
एफडब्ल्यूआईडब्ल्यू यह अन्य सभी उत्तरों के लिए थोड़ा बेमानी हो सकता है और यह स्वीकृत उत्तर के समान है, जो स्पॉट पर है; लेकिन शायद यह किसी को बाहर करने में मदद करेगा।
git stash show --help
आपको वह सब देना चाहिए जो आपको चाहिए; जिसमें स्टश शो की जानकारी शामिल है।
शो [<स्लेश>]
स्टैश में दर्ज परिवर्तनों को स्टैक्ड अवस्था और उसके मूल माता-पिता के बीच अंतर के रूप में दिखाएं। जब नहीं दिया जाता है, तो नवीनतम दिखाता है। डिफ़ॉल्ट रूप से, कमांड डिफॉल्ट को दिखाता है, लेकिन यह git diff के लिए जाने जाने वाले किसी भी प्रारूप को स्वीकार करेगा (जैसे, git stash show -p stash @ {1} को पैच के रूप में दूसरा सबसे नया स्टैश देखने के लिए)। आप डिफ़ॉल्ट व्यवहार को बदलने के लिए stash.showStat और / या stash.showPatch कॉन्फ़िगरेशन चर का उपयोग कर सकते हैं।
वह स्टैश की सूची है
git stash list
stash@{0}: WIP on feature/blabla: 830335224fa Name Commit
stash@{1}: WIP on feature/blabla2: 830335224fa Name Commit 2
तो स्टैश नंबर प्राप्त करें और करें:
तुम कर सकते हो:
git stash show -p stash@{1}
लेकिन अगर आप एक अंतर चाहते हैं (यह दिखावा दिखाने के लिए अलग है, इसलिए मैं यह उत्तर लिखता हूं। Diff
अपनी शाखा में वर्तमान कोड पर विचार करें और show
बस दिखाएं कि आप क्या लागू करेंगे। )
आप उपयोग कर सकते हैं:
git diff stash@{0}
या
git diff stash@{0} <branch name>
एक और दिलचस्प बात यह है:
git stash apply
git stash apply stash@{10}
यह सूची से हटाए बिना स्टैश लागू करता है, आप कर सकते हैं git checkout .
उन बदलावों को हटा हैं या यदि आप git stash drop stash@{10}
सूची से एक स्लैश हटाने के लिए खुश हैं ।
यहां से मैं कभी भी git stash pop
संयोजन का उपयोग करने और उपयोग करने की अनुशंसा नहीं करता हूं git stash apply
और git stash drop
यदि आप गलत शाखा में एक स्लैश लागू करते हैं ... तो कभी-कभी आपके कोड को पुनर्प्राप्त करना मुश्किल होता है।
इस पर निर्भर करते हुए कि आप (स्थानीय कामकाजी वृक्ष / माता-पिता / मुखिया की प्रतिबद्धता के साथ) की तुलना करना चाहते हैं, वास्तव में कई कमांड उपलब्ध हैं, जिनमें से अच्छे पुराने git diff
, और अधिक विशिष्ट हैं git stash show
:
╔══════════════════════╦═══════════════════════════════╦═══════════════════╗
║ Compare stash with ↓ ║ git diff ║ git stash show ║
╠══════════════════════╬═══════════════════════════════╬═══════════════════╣
║ Local working tree ║ git diff stash@{0} ║ git stash show -l ║
║----------------------║-------------------------------║-------------------║
║ Parent commit ║ git diff stash@{0}^ stash@{0} ║ git stash show -p ║
║----------------------║-------------------------------║-------------------║
║ HEAD commit ║ git diff stash@{0} HEAD ║ / ║
╚══════════════════════╩═══════════════════════════════╩═══════════════════╝
git stash show
पहली नज़र में अधिक उपयोगकर्ता के अनुकूल दिखने के दौरान , git diff
वास्तव में यह अधिक शक्तिशाली है कि यह एक अधिक केंद्रित अंतर के लिए फ़ाइल नाम निर्दिष्ट करने की अनुमति देता है। मैंने व्यक्तिगत रूप से इन सभी कमांड के लिए अपने zsh git प्लगइन में एलियासेस सेट किया है ।