Developers using GIT as their Source Version Control know the troubles in setting it up for new projects. Getting more productive needs setting up of user credentials, alias’ and other git configurations for every new project. But what if you could have a global git configuration to avoid redundant tasks? That’s where global gitconfig comes in.
Git does not automatically create the global .gitconfig file during installation. This file is not created until it is written to for the first time. If you have never set a system variable, it will not be on your file system.
Creating your global gitconfig file:
There are several ways in which you can create your global gitconfig file.
- From the Terminal, execute
git config --global -ewhich will open up a text editor with the contents of the file (only if it has some content already, else it would be empty). You can then update the file with your custom configurations.
git config --global --listwill show you where the global gitconfig file is expected to be only when it does not exist yet. Create a text file
.gitconfigin that expected location and save it with your custom configuration.
- If the file exists already, the previous step will show you the contents of the global .gitconfig file. To access the file, try searching for it in its usual location as described below.
Where to find your global gitconfig file?
For GIT v2.8 and above:
git config --list --show-origin that will list all the configurations with the corresponding filenames as shown below:
file:$HOME/.gitconfig user.global=true // global gitconfig file file:$HOME/.gitconfig user.override=global file:$HOME/.gitconfig include.path=$INCLUDE_DIR/absolute.include file:.git/config user.local=true // local gitconfig file file:.git/config user.override=local file:.git/config include.path=../include/relative.include ....
For GIT below v2.8:
Git looks for the global gitconfig file in the following locations:
- For *NIX Systems, the file is located at
- For Windows based Systems, this file is located differently depending on the OS Version.
- Windows XP:
C:\Documents and Settings\%USERPROFILE%\.gitconfig
- Windows Vista,7,8,10 :
- If you use TortoiseGit, you can access the file directly from the Menu –
Settings/Git/Config/Edit global .gitconfig
- If you use Cygwin + Git, then the file is located at
- Windows XP:
Common global gitconfig configurations:
- User Details: You can provide your name, email to ensure that all your repositories have the same details.
- Alias: Aliases can be used to shorten git commands and help you be more productive. Check below section on Aliases.
- Colors: You can customize the color schemes used by default. Check out Git Prompt for having git branch information directly in your terminal.
- Credential helpers: You can setup credential helpers that would eliminate the need to even enter your password.
- Core: Helps you to customize core options like providing the path to your global .gitignore file.
- Diff: Allows you to specify your custom diff tool.
As an example, you can check out this global .gitconfig file. Feel free to fork it and use it as your own global gitconfig.
Using Alias makes your Git experience simpler, easier, and more familiar. It comes handy when you don’t want to type the entire text of each of the Git commands.
git config --global alias.co checkout in the terminal, you effectively add an alias for
git checkout in your global gitconfig file. So henceforth, you could simply type
git co (instead of git checkout) to check out a branch.
You can add several alias’ by directly updating the global gitconfig file. A few useful common git alias’ are listed below:
// global .gitconfig file [alias] aa = add --all b = branch -v bd = branch -d bD = branch -D br = branch ci = commit cim = commit -m cima = commit -am clr = rm -r --cached co = checkout cp = cherry-pick -x d = diff -w dc = diff --cached nb = checkout -b lg = log --graph --date=relative --pretty=tformat:'%Cred%h%Creset -%C(auto)%d%Creset %s %Cgreen(%an %ad)%Creset' -20 oups = commit --amend --no-edit r = remote -v rh = reset --hard st = status -sb t = tag -l unstage = reset HEAD uncommit = reset --soft HEAD^ pushfl = push --force-with-lease
Resource:Global gitconfig file
- Setup your global gitignore file to avoid creating local gitignore files for each individual project.
- Setup up a colorful GIT prompt to further improve productivity. It will enable you to see your current branch, status of the repository, whether you have changes/stashed content and so on.
- Want to improve code quality? See how to use git hooks to automatically lint your code
- Advanced Aliase’ Examples