Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to configure Git bash prompt by adding datetime?

My msysgit Git bash command-line prompt looks like this right now:

GitUserName@WorkStationName WorkSpacePath (BranchName)

I would like to have a timestamp in front of that line, like HH:mm (hours:minutes).

Does anyone know how I can easily do this?

like image 726
deblendewim Avatar asked Oct 21 '12 20:10

deblendewim


People also ask

How do I set the Git prompt in Windows Bash?

The Git for Windows Bash prompt is set using a configuration shell script named git-prompt.sh that can be found in the following directory. Using a text editor that supports unix style files, such as Notepad++, open the file and you will find something that looks like this.

Where is the Git-prompt-sh file?

We are looking for the git-prompt.sh file in the profile.d folder. The git-prompt.sh file contains the configurations for the title of the Git Bash terminal and the Bash prompt string. We can change the colors of the prompt, and modify the prompt content based on our needs.

What should I do first when I install Git?

The first thing you should do when you install Git is to set your user name and email address. This is important because every Git commit uses this information, and it’s immutably baked into the commits you start creating:

How do I change the configuration of a Git file?

Git’s configuration files are plain-text, so you can also set these values by manually editing the file and inserting the correct syntax. It’s generally easier to run the git config command, though. The configuration options recognized by Git fall into two categories: client-side and server-side.


Video Answer


3 Answers

I've found that using the file \Git\etc\profile.d\git-prompt.sh you can add a line that looks like this to add datetime to your prompt

PS1="$PS1"'\[\033[35m\]\D{%F %T} ' (as seen here for formatting details)

My prompt currently looks like this

2015-11-08 23:48:08 Sean@pc-01 /c/dev/projects

PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'\[\033[35m\]\D{%F %T} '
PS1="$PS1"'\[\033[32m\]'       # change to green
PS1="$PS1"'\u@\h '             # user@host<space>
PS1="$PS1"'\[\033[35m\]'       # change to purple
#PS1="$PS1"'$MSYSTEM '          # show MSYSTEM
PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
PS1="$PS1"'\w'                 # current working directory
if test -z "$WINELOADERNOEXEC"
then
    GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
    COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
    COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
    COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
    if test -f "$COMPLETION_PATH/git-prompt.sh"
    then
        . "$COMPLETION_PATH/git-completion.bash"
        . "$COMPLETION_PATH/git-prompt.sh"
        PS1="$PS1"'\[\033[36m\]'  # change color to cyan
        PS1="$PS1"'`__git_ps1`'   # bash function
    fi
fi
PS1="$PS1"'\[\033[0m\]'        # change color
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'$ '                 # prompt: always $

Note: The answer using $(/bin/date) did not work for me as I think I was having trouble pathing to \Git\usr\bin\date.exe

like image 154
seangwright Avatar answered Oct 19 '22 16:10

seangwright


If by date you mean the current time/date, then this example can help:

 PS1="\n\[\033[35m\]\$(/bin/date)\n\[\033[32m\]\w\n\[\033[1;31m\]\u@\h: \[\033[1;34m\]\$(/usr/bin/tty | /bin/sed -e 's:/dev/::'): \[\033[1;36m\]\$(/bin/ls -1 | /usr/bin/wc -l | /bin/sed 's: ::g') files \[\033[1;33m\]\$(/bin/ls -lah | /bin/grep -m 1 total | /bin/sed 's/total //')b\[\033[0m\] -> \[\033[0m\]"

git prompt with date

It uses $(/bin/date) and is a multi-line prompt containing date/time, full path, user and host, active terminal, even file count and space usage.

It illustrates how you could integrate the date in your own git prompt.


The OP deblendewim comments:

I was also wondering how to change it without running it immediatly in the prompt.
Changed profile-file from:

if test -z "$WINELOADERNOEXEC" then PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\] $ ' else PS1='\[\033]0;$MSYSTEM:\w\007 \033[32m\]\u@\h \[\033[33m\w\033[0m\] $ ' 

into

if test -z "$WINELOADERNOEXEC" then PS1='\[\033]0;$MSYSTEM:\w\007 \[\033[36m\]\t \[\033[32m\]\u@\h \[\033[33m\w$(__git_ps1)\033[0m\] $ ' else PS1='\[\033]0;$MSYSTEM:\w\007 \[\033[36m\]\t \[\033[32m\]\u@\h \[\033[33m\w\033[0m\] $ ' 
like image 34
VonC Avatar answered Oct 19 '22 15:10

VonC


The answer given by seangwright works but it will override your global configuration. If you look inside \Git\etc\profile.d\git-prompt.sh you will see this:

if test -f ~/.config/git/git-prompt.sh
then
    . ~/.config/git/git-prompt.sh
else
    PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
    PS1="$PS1"'\n'                 # new line
    # ...

What this means is you can override the config for just your user account, and this is probably preferred since any updates to Git Bash won't overwrite that file. All you have to do is create the ~/.config/git folder if it does not already exist and then save your configuration inside the file git-prompt.sh (full path ~/.config/git/git-prompt.sh). Going off of the most recent Git Bash configuration, it might look something like this:

PS1='\[\033]0;$TITLEPREFIX:$PWD\007\]' # set window title
PS1="$PS1"'\n'                 # new line

# THE FOLLOWING LINE ADDS THE TIMESTAMP
PS1="$PS1"'\[\033[35m\]\D{%F %T} ' 

PS1="$PS1"'\[\033[32m\]'       # change to green
PS1="$PS1"'\u@\h '             # user@host<space>
PS1="$PS1"'\[\033[35m\]'       # change to purple
PS1="$PS1"'$MSYSTEM '          # show MSYSTEM
PS1="$PS1"'\[\033[33m\]'       # change to brownish yellow
PS1="$PS1"'\w'                 # current working directory
if test -z "$WINELOADERNOEXEC"
then
  GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
  COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
  COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
  COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
  if test -f "$COMPLETION_PATH/git-prompt.sh"
  then
    . "$COMPLETION_PATH/git-completion.bash"
    . "$COMPLETION_PATH/git-prompt.sh"
    PS1="$PS1"'\[\033[36m\]'  # change color to cyan
    PS1="$PS1"'`__git_ps1`'   # bash function
  fi
fi
PS1="$PS1"'\[\033[0m\]'        # change color
PS1="$PS1"'\n'                 # new line
PS1="$PS1"'$ '                 # prompt: always $
like image 1
Jason Roman Avatar answered Oct 19 '22 15:10

Jason Roman