Version control is the backbone of modern software development, and mastering Git config can take your version control game to the next level.
Today I’m sharing a few tips to enable you to streamline your workflow and leverage the best out of our beloved Git, the Swiss Army knife of version control systems, and turn you into a Git guru.
In Git 2.13 and later, you can conditionally include another Git config file based on your Git directory or branch. This feature is incredibly handy when you need different configurations for various projects.
For instance, if you have a work-specific Git configuration, you can create a
.gitconfig.work file and add or override configuration values as needed. Here's an example:
[user] email = firstname.lastname@example.org [includeIf "gitdir:~/work/"] path = .gitconfig.work
This way, when you're working within the
~/work directory or its subdirectories, Git will pick up these specific configurations, making your work-related tasks a breeze.
By default, when you initialize a new Git repository, the initial branch is named 'master.'
However, there's a growing awareness of using more inclusive terminology, such as 'main,' as the default branch name. To make this change globally for all new repositories, you can use the following command:
git config --global init.defaultBranch <name>
This command updates your global
~/.gitconfig file, aligning Git with the evolving best practices.
If you want to leave the default behavior but rename the branch after initialization, you can use the
git branch -m <name>
Enhance your Git workflow by integrating external diff and merge tools like Beyond Compare or KDiff3. By configuring them in your gitconfig, you can seamlessly use these tools for resolving conflicts and comparing changes. Here's an example configuration:
[diff] tool = bc3 [difftool "bc3"] cmd = "bcomp \"$LOCAL\" \"$REMOTE\""
Now, Git will use Beyond Compare (or your preferred tool) whenever you run commands like
git difftool or
Git aliases are your secret weapon for boosting productivity. They allow you to create shortcuts for frequently used Git commands. For example, you can create an alias called co that executes git checkout with just git co. Aliases are defined in your
~/.gitconfig file, and they can replace one or more Git commands.
Here's an example alias configuration:
[alias] co = checkout ci = commit st = status br = branch hist = log --pretty=format:"%h %ad | %s%d [%an]" --graph --date=short
With these aliases in place, running git co is equivalent to git checkout, and git hist provides a custom, more informative git log output.
$ git hist * f790b78 2023-08-27 | feat: add footer #13 [user] |\ | * 11d2d75 2023-08-27 | feat: implement new footer (origin/add-footer, add-footer) [user] | * 091d895 2023-08-27 | feat: add footer component [user] |/ * e45725d 2023-08-27 | fix: minor style fixes #12 [user]
If you're a fan of Visual Studio Code (VS Code), you can set it as your default Git editor to leverage its advanced features. To do this globally, you can run the following command:
git config --global core.editor "code --wait"
This command configures Git to use VS Code as the default editor, enhancing your Git experience when it comes to making commit messages or resolving merge conflicts.
Mastering Git config opens up a world of possibilities and efficiency. These five tips are just the beginning. If you're passionate about simplifying configurations and helping fellow developers, consider visiting and contributing to our open source library of config tips and tricks Config.Tips
Config.tips was born from the idea that collecting knowledge in one place could help make any type of config easier for developers.
If you like our project you can also give a star to our Github repository.
We are one of the open source repos listed for Hacktoberfest so don’t be shy to make config even more accessible for everyone by opening a pull-request with your config tip(s).