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?
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.
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.
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:
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.
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
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\]"
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\] $ '
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 $
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With