यह दुर्भाग्यपूर्ण है कि git stash apply stash^{/<regex>}
यह काम नहीं करता है (यह वास्तव में स्टैश सूची की खोज नहीं करता है, स्वीकृत उत्तर के तहत टिप्पणियां देखें )।
यहां ड्रॉप-इन प्रतिस्थापन git stash list
हैं जो पहले (सबसे हाल के) को खोजने के लिए regex द्वारा खोज करते हैं stash@{<n>}
और फिर उसे पास करते हैं git stash <command>
:
# standalone (replace <stash_name> with your regex)
(n=$(git stash list --max-count=1 --grep=<stash_name> | cut -f1 -d":") ; if [[ -n "$n" ]] ; then git stash show "$n" ; else echo "Error: No stash matches" ; return 1 ; fi)
(n=$(git stash list --max-count=1 --grep=<stash_name> | cut -f1 -d":") ; if [[ -n "$n" ]] ; then git stash apply "$n" ; else echo "Error: No stash matches" ; return 1 ; fi)
# ~/.gitconfig
[alias]
sshow = "!f() { n=$(git stash list --max-count=1 --grep=$1 | cut -f1 -d":") ; if [[ -n "$n" ]] ; then git stash show "$n" ; else echo "Error: No stash matches $1" ; return 1 ; fi }; f"
sapply = "!f() { n=$(git stash list --max-count=1 --grep=$1 | cut -f1 -d":") ; if [[ -n "$n" ]] ; then git stash apply "$n" ; else echo "Error: No stash matches $1" ; return 1 ; fi }; f"
# usage:
$ git sshow my_stash
myfile.txt | 1 +
1 file changed, 1 insertion(+)
$ git sapply my_stash
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: myfile.txt
no changes added to commit (use "git add" and/or "git commit -a")
ध्यान दें कि उचित परिणाम कोड वापस कर दिए जाते हैं ताकि आप अन्य स्क्रिप्ट्स के भीतर इन कमांड का उपयोग कर सकें। इसके साथ कमांड चलाने के बाद इसे सत्यापित किया जा सकता है:
echo $?
बस चर विस्तार कारनामों के बारे में सावधान रहना चाहिए क्योंकि मैं --grep=$1
भाग के बारे में निश्चित नहीं था । यह शायद होना चाहिए, --grep="$1"
लेकिन मुझे यकीन नहीं है कि अगर यह रेग्जिम सीमांकक के साथ हस्तक्षेप करेगा (मैं सुझावों के लिए खुला हूं)।
git stash push -m stashname
है वर्तमान वाक्य रचना ।git stash save stashname
पदावनत कर दिया गया है।