Fading Coder

One Final Commit for the Last Sprint

Home > Tools > Content

Understanding Git Configuration Files

Tools May 13 1

Understanding Git Configuration Files

Git uses configuration files to store settings that control the behavior and appearance of the version control system. These configuration files are organized in three levels: repository-level, user-level, and system-level configurasions.

The priority order for these configuration levels is repository > user > system. Git provides the git config command to manage these configuration variables.

Configuration File Locations

Repository-level configuration is stored in ./.git/config within the repository. This applies only to the specific repository. Use the --local flag to read from or write to this file, which is the default behavior when working within a repository.

User-level configuration resides in ~/.gitconfig or ~/.config/git/config depending on your system. On Windows, this translates to C:\Users\$USER\.gitconfig. This configuration applies to the current user across all repositories. Use the --global flag to access this file.

System-level configuration is located at /etc/gitconfig within the Git installation directory. This contains default settings for all users and repositories on the system. Use the --system flag to modify this file. Note that modifying system-level configuration requires administrator or superuser privileges.

To view all configuration settings along with their source files, run:

git config --list --show-origin

Querying Configuration Information

Format: git config [--local|--global|--system] --list

The git config --list command displays the final computed configuration by merging all three configuration files. Git resolves conflicts by using the last value found for each variable.

$ git config --list
user.name=John Doe
user.email=john@example.com
color.status=auto
color.branch=auto
color.interactive=auto
color.diff=auto
...

You may encounter duplicate variible names because Git reads from multiple files (such as /etc/gitconfig and ~/.gitconfig). In such cases, Git uses the most recently defined value for each key.

To check a specific configuration value, use:

$ git config user.name
John Doe

Modifying Configuration Files

Editing Configuration Files

Format: git config [--local|--global|--system] --edit

This command opens the configuration file in your configured text editor. If you haven't set a preferred editor, Git will use your system's default editor.

To set a different text editor, such as Emacs:

$ git config --global core.editor emacs

On Windows, you must provide the full path to the executable. For example, to configure Notepad++ (32-bit version):

$ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin"

Adding Configuration Entries

Format: git config [--local|--global|--system] --add key value

This command adds a new configuration key with the specified value to the target configuration file.

Removing Configuration Entries

Format: git config [--local|--global|--system] --unset key

This command removes the specified configuration key from the target configuration file.

Accessing Help

For comprehensive documentation about configuration options, use:

git help config

Related Articles

Installing CocoaPods on macOS Catalina (10.15) Using a User-Managed Ruby

System Ruby on macOS 10.15 frequently fails to build native gems required by CocoaPods (for example, ffi), leading to errors like: ERROR: Failed to build gem native extension checking for ffi.h... no...

Resolve PhpStorm "Interpreter is not specified or invalid" on WAMP (Windows)

Symptom PhpStorm displays: "Interpreter is not specified or invalid. Press ‘Fix’ to edit your project configuration." This occurs when the IDE cannot locate a valid PHP CLI executable or when the debu...

Capturing Android Screenshots and Screen Recordings with ADB

Two practical ways to grab images and videos from an Android device: Mirror the phone display to a computer and use desktop tools for screenshots and GIFs Use ADB commands (no UI mirroring required)...

Leave a Comment

Anonymous

◎Feel free to join the discussion and share your thoughts.