Check if “git stash” stashed anything

I have a Windows Command script designed to merge the dev branch into a project branch. It starts by reading the current branch name, stashing changes, fetching and merging the dev and project branches, then switches back to the original branch and pops the stash.

The issue is there might not be any changes to stash. This leaves the previous stash at the top of the stack. When it gets to the end of the script and pops the stash, it’s popping the previous stash which is unrelated to the current branch.

  • Wrapping an SVN Python hook in a Windows batch file
  • Run external tool before GIT commit in PHPStorm
  • How to push git from php using exec()
  • VisualSVN pre-commit rule
  • How to run command in windows batch Command in jenkins
  • how to start bash in a directory in windows .bat?
  • Set SourceBranch=dev
    Set ProjectBranch=project
    
    :: Stash current changes.
    For /F "tokens=1,2" %%a In ('Git branch -q') Do If "%%a"=="*" Set CurrentBranch=%%b
    Git stash save -u
    
    :: Pull latest source branch.
    Git checkout %SourceBranch%
    Git pull
    For /F "tokens=1,3" %%a In ('Git branch -q -v') Do If "%%a"=="*" Set MergeHash=%%b
    
    :: Merge source into project branch.
    Git checkout %ProjectBranch%
    Git pull
    Git merge --commit %MergeHash%||Exit 1
    
    :: Return to original branch.
    Git checkout %CurrentBranch%
    Git stash pop
    

    How can I get feedback from Git stash or Git status to determine whether I need to pop the stash?

  • More compact relative dates in log?
  • Git - how to find first commit of specific branch
  • Using path extension \\?\ for windows 7 with python script
  • Git Diff with Beyond Compare
  • Different Config Files in GitHub Repo Branch
  • Is there any git web gateway which crossreferences Python source code
  • 4 Solutions collect form web for “Check if “git stash” stashed anything”

    git stash allows you to provide a message. You can use a generated token as your message so that you know it won’t conflict with other git stash messages.

    Then, when you want to check whether or not to pop, simply check if the git stash list output contains your token. If so, pop the stash.

    git stash list #get a listing of all stashes to parse
    git stash show -p stash@{0} #replace 0 with number of relevant stash from list
    

    You can git diff and inspect the output. If there is none, then there is nothing to stash. Any issue with that strategy?

    On Linux, you can use git stash list | wc -l to count the number of stash entries. If there was nothing to stash, then this returns the same before and after your actual git stash. I’m not sure if you can use this on Windows though.

    Git Baby is a git and github fan, let's start git clone.