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.

show git config global

The git config –list command will show global git config settings.

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:

  1. workingtree
  2. local
  3. global
  4. system
  5. 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:

 

App Architecture
Software Quality
Cloud Computing
Security
SearchAWS
Close