불행히도 git stash apply stash^{/<regex>}
작동하지 않습니다 (실제로 숨김 목록을 검색하지는 않지만 허용되는 답변 아래의 주석 참조 ).
여기에 드롭 인 교체를 검색하는 것이 있습니다 git stash list
정규식에 의해 발견하는 첫 번째 (가장 최근) 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
는 IS 전류 구 .git stash save stashname
더 이상 사용되지 않습니다.