I mentioned in my post on Customizing the zsh
prompt, that you can get certain information from the git repository into the prompt or right prompt.
This subject has grown into a book: reworked and expanded with more detail and topics. Like my other books, I plan to update and add to it after release as well, keeping it relevant and useful. You can order it on the Apple Books Store now.
That post contains an example adapted from the ‘Pro git’ documentation which shows how to display the current branch and repo in the prompt.
Personally, I don’t like the Terminal window to be cluttered up with repeated information. While the information from the git repository does change over time, it does not change that frequently, and the information gets repeated over and over.
While I was researching the last post, which describes how to display the current working directory in Terminal’s window title bar, I learnt that you can also set a window title using a different escape code.
So, instead of repeating the git information on every prompt, we can show it in the window or tab title bar.
You can find the code to set this up in my dotfiles
repository on Github. To use it make sure the git_vcs_setup
file is in your fpath
and load it in your .zshrc
with
# Git status
autoload -U git_vcs_setup && git_vcs_setup
(More info on fpath
and autoloading functions.)
Note that this file sets up two functions: update_terminal_window_title
and update_terminal_tab_title
. Terminal can have separate information titles for tabs and the entire window. When there are no tabs (or technically, just a single tab) Terminal displays both titles.
The status info above will show the repository, the current branch, a U
when there are unstaged changes, and a S
when there are staged, but uncommitted changes.
If you want more details in the status, you might want to consider using a more powerful solution to retrieve the git status, such as this project.