• Linux

    parse_git_branch() {
    	git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/'
    }
    
    export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[01;31m\]$(parse_git_branch)\[\033[00m\]\$ '
    
  • Windows

    function Write-BranchName () {
        try {
            $branch = git rev-parse --abbrev-ref HEAD
    
            if ($branch -eq "HEAD") {
                # we're probably in detached HEAD state, so print the SHA
                $branch = git rev-parse --short HEAD
                Write-Host "($branch)" -NoNewline -ForegroundColor "red"
            }
            else {
                # we're on an actual branch, so print it
                Write-Host "($branch)" -NoNewline -ForegroundColor "blue"
            }
        } catch {
            # we'll end up here if we're in a newly initiated git repo
            Write-Host "(no branches yet)" -NoNewline -ForegroundColor "yellow"
        }
    }
    
    function prompt {
        $base = "PS "
        $path = "$($executionContext.SessionState.Path.CurrentLocation)"
        $userPrompt = "$('>' * ($nestedPromptLevel + 1)) "
    
        Write-Host "`n$base" -NoNewline
    
        #if (Test-Path .git) {
        #    Write-Host $path -NoNewline -ForegroundColor "green"
        #    Write-BranchName
        #}
        #else {
        #    # we're not in a repo so don't bother displaying branch name/sha
        #    Write-Host $path -NoNewline -ForegroundColor "green"
        #}
        Write-Host $path -NoNewline -ForegroundColor "green"
        Write-BranchName
    
        return $userPrompt
    }