How to set important Git config global properties
There are a number of different ways to customize your development environment, but the global Git config file is the one most likely to be used to customize settings such as your username, email, preferred text editor and remote branches. Here are the key things you need to know about the global Git config file.
Where is the global git config file located?
The global Git config file is stored in a file uncreatively named .gitconfig the user’s home directory. Depending on the operating system, that would be:
- C:\Users\<username> on Windows
- ~home/<username> on Linux
- ~root/ for sudo operations
One thing to note is that each user gets their own global Git config file. This can cause problems if you run a shell script with sudo command. If sudo is used in a script, the ~root/.gitconfig file will be used instead of the global git config file of the user running the script. This can lead to unexpected results, so use the sudo command judiciously.
Git config global username and email
Before a local Git commit can be issued, the global git config username and email properties must be set. Don’t worry, your name and email won’t end up on a mailing list. These details are simply used as metadata in each commit so anyone viewing the Git log would know who committed the code and how to get in touch with them. There is nothing nefarious about the Git config’s global username and email requirements.
How to set global git config settings?
There are a number of ways to edit the global git config file. One way is to add properties through the command line. The global git config email and username properties are often set in the following way:
git config --global user.name cameronmcnz
git config --global user.email [email protected]
To be more expressive, you can include the –add switch when you set a global git config property:
git config --global --add user.name cameronmcnz
git config --global --add user.email [email protected]
How to do a git config global edit?
The global git config is simply a text file, so it can be edited with whatever text editor you choose. Open, edit global git config, save and close, and the changes will take effect the next time you issue a git command. It’s that easy.
From within the BASH shell or terminal window, you can invoke the default Git editor through the following command:
git config --global --edit
On Ubuntu, this opens the Nano text editor, which I’m not a huge fan of. Fortunately, the global git config file can be used to change the default Git editor to something you find more user friendly.
Configure Git global’s core editor
The following commands can be used to change the global Git config’s default text editor to Vim, emacs, Textmate or Atom. There’s a separate tutorial on how to make NotePad++ Git’s core editor, which is something easy to do on Windows but somewhat unpredictable on Linux.
Global Git Config Core Editor Settings | |
---|---|
Text Editor | Global Git Config Command |
Atom | git config –global core.editor “atom –wait” |
emacs | git config –global core.editor “emacs” |
Textmate | git config –global core.editor “mate -w” |
vim | git config –global core.editor “vim” |
How do you override Git config global?
Git uses as cascading application of gitconfig files to determine the value of a Git config property to use at runtime. There are five commonly encountered Git config scopes, listed here from the most specific to the most general:
- workingtree
- local
- global
- system
- portable
Since workingtree and local git scopes are more specific than global, any variable set in these files will override the git config global scope. So if you need a specific Git config username or email for a given repository, or you want special settings for an added Git worktree, the local or workingtree scopes can be used.
List and show global git config
To see all of properties configured globally in Git, you can use the –list switch on the git config command. Adding the –show-origin switch will also tell you the global .gitconfig file’s location.
global@git:~/$ git config --global --list --show-origin file:/home/gme/.gitconfig [email protected] file:/home/gme/.gitconfig user.name=cameronmcnz file:/home/gme/.gitconfig core.editor=vim file:/home/gme/.gitconfig http.sslverify=false file:/home/gme/.gitconfig credential.helper=store file:/home/gme/.gitconfig http.proxy=193.168.0.11 file:/home/gme/.gitconfig http.postbuffer=193.168.0.12 file:/home/gme/.gitconfig http.sslcainfo=193.168.0.10
Remove global git config settings
To delete git config settings simply use the unset command:
git config --global --unset core.editor
Occasionally, a property gets set twice and the –unset switch fails. In this case, simply use the global git config’s–unset-all switch.
git config --global --unset-all core.editor
The global git config is an important file for customizing your version control experience. Knowing how to show Git config settings is important, as is being able to edit, update and remove settings. Knowing how will certainly make your experience with the global Git config tool more pleasurable.
Become a Git power user
Want to become a powerful Git user? Then take a look at the following Git articles and tutorials:
- How to do a Git clean up of branches and commits
- Learn to rebase onto master and rebase from the master branch
- Squash all Git commits on a branch down to one
- Shelve your changes with Git stash pop and apply
- Easily explain the Git vs GitHub difference
- Add a shallow git clone of depth 1 do your Jenkins jobs
- Set up a local Git server with a bare Git repo