28 lines
		
	
	
	
		
			808 B
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			28 lines
		
	
	
	
		
			808 B
		
	
	
	
		
			Text
		
	
	
	
	
	
| # fstash - easier way to deal with stashes
 | |
| # type fstash to get a list of your stashes
 | |
| # enter shows you the contents of the stash
 | |
| # ctrl-d shows a diff of the stash against your current HEAD
 | |
| # ctrl-b checks the stash out as a branch, for easier merging
 | |
| fstash() {
 | |
|   local out q k sha
 | |
|   while out=$(
 | |
|     git stash list --pretty="%C(yellow)%h %>(14)%Cgreen%cr %C(blue)%gs" |
 | |
|     fzf --ansi --no-sort --query="$q" --print-query \
 | |
|         --expect=ctrl-d,ctrl-b);
 | |
|   do
 | |
|     mapfile -t out <<< "$out"
 | |
|     q="${out[0]}"
 | |
|     k="${out[1]}"
 | |
|     sha="${out[-1]}"
 | |
|     sha="${sha%% *}"
 | |
|     [[ -z "$sha" ]] && continue
 | |
|     if [[ "$k" == 'ctrl-d' ]]; then
 | |
|       git diff $sha
 | |
|     elif [[ "$k" == 'ctrl-b' ]]; then
 | |
|       git stash branch "stash-$sha" $sha
 | |
|       break;
 | |
|     else
 | |
|       git stash show -p $sha
 | |
|     fi
 | |
|   done
 | |
| }
 | 
