Re: [CLOSED] git checkout <branch> allowed with uncommitted changes
- From
Alexey Shumkin <alex.crezoff@gmail.com>
- Date
- Oct 13, 2011, 18:56 UTC
- Message-ID
- <20111013225611.37093103@zappedws>
- In-Reply-To
- <loom.20111013T181801-923@post.gmane.org>
> (Though if someone can come up with a script / hook / whatever that > improves the "visibility" of stash, that would be awesome. >
"git-completion" for Bash/ZSH gives such an opportunity I use it
take a look into <git-sources>/contrib/completion/git-completion.bash -- >8 -- # 3) Consider changing your PS1 to also show the current branch: # Bash: PS1='[\u@\h \W$(__git_ps1 " (%s)")]\$ ' # ZSH: PS1='[%n@%m %c$(__git_ps1 " (%s)")]\$ ' # # The argument to __git_ps1 will be displayed only if you # are currently in a git repository. The %s token will be # the name of the current branch. # # In addition, if you set GIT_PS1_SHOWDIRTYSTATE to a nonempty # value, unstaged (*) and staged (+) changes will be shown next # to the branch name. You can configure this per-repository # with the bash.showDirtyState variable, which defaults to true # once GIT_PS1_SHOWDIRTYSTATE is enabled. # # You can also see if currently something is stashed, by setting # GIT_PS1_SHOWSTASHSTATE to a nonempty value. If something is stashed, # then a '$' will be shown next to the branch name. # # If you would like to see if there're untracked files, then you can # set GIT_PS1_SHOWUNTRACKEDFILES to a nonempty value. If there're # untracked files, then a '%' will be shown next to the branch name. # # If you would like to see the difference between HEAD and its # upstream, set GIT_PS1_SHOWUPSTREAM="auto". A "<" indicates # you are behind, ">" indicates you are ahead, and "<>" # indicates you have diverged. -- >8 -- my .bashrc contains (shortly) PS1='\[\e]0;\w [$(__git_ps1 "%s")]\a\]\n\[\e[32m\]\u@\h' PS1=$PS1' \[\e[33m\]\w\[\e[0m\]\n[$(__git_ps1 "%s")]\n\$'
export PS1 export GIT_PS1_SHOWDIRTYSTATE=1 export GIT_PS1_SHOWSTASHSTATE=1 export GIT_PS1_SHOWUPSTREAM="auto"
and console prompt with all possible cases looks like
<username>@<hostname> ~/Git-src.git/contrib/completion [post-receive-email *+$>] $
* - I have unstaged changes + - I have staged changes $ - I have stashed changes (ta-daaa!)
> - I have commits ahead upsteam (named branch I branched from)
P.S. And JFYI, it is a good form in mailing lists to CC (Reply to all) participants