User Tools

Site Tools


kb:scc:git:config

02 Configure

If you're using a GUI client, some of these settings may be done via its settings dialog.

Config Locations

Git checks 4 places for a configuration file, cascading settings which means that the more specific config files overwrite or extend settings from the more generic files (machine → global → local → worktree).

Machine or System

Your machine's system-wide configuration file.

  • Option: --system
    • For writing: write to system-wide file.
    • For reading: read only from system-wide file.
  • Example Paths
    • Windows: <git-install-root>\mingw64\etc\gitconfig
    • Linux: ~etc/gitconfig

Global

Your user's global .gitconfig file.

  • Option: --global
    • For writing: write to global file.
    • For reading: read only from global file.
  • Example Paths
    • Windows: C:\Users\<username>\.gitconfig
    • Linux: ~/.gitconfig

Local

The local repo's config file.

  • Option: --local
    • For writing: write to the repository file.
    • For reading: read only from repository file.
  • Example Paths
    • Windows: <git-repo>\.git\config
    • Linux: <git-repo>/.git/config

Worktree

The config file for the git worktree (if configured).

  • Option: --worktree
    • For writing: write to the repository file.
    • For reading: read only from repository file.
  • Example Paths
    • Windows: <git-repo>\.git\config.worktree
    • Linux: <git-repo>/.git/config.worktree

If extensions.worktreeConfig is not enabled, this is the same as --local.

Multiple Installations

You might end up with multiple system-wide configuration files, after installing multiple git instances. To show the configuration keys and values and where they origin from, use

 git config --list --show-origin

E.g. when running this command in the git-for-windows git bash, you might see an origin like this

 file:C:/Program Files/Git/etc/gitconfig core.symlinks=false

and when running it in the git bash from the git fork client, you might see an origin like this

 file:C:/Users/admin/AppData/Local/Fork/gitInstance/2.45.2/etc/gitconfig core.symlinks=false

Basics

If you haven't been asked for your name and your email address during installation, you can manually set this information:

  git config --global user.name "Your Name"
  git config --global user.email "your@email.address"

Example .gitconfig file

  [user]
  	name = Your Name
  	email = your@email.address
  [core]
  	excludesfile = /some/path/to/.gitignore_global
  	filemode = false

Ignoring files

The exludesfile mentioned in the .gitconfig file (the global .gitignore file) defines which files to ignore (exclude from versioning) for all repositories on the computer its stored on. You can set the path of the global exludesfile to the actual user's home directory with

  git config --global core.excludesfile '~/.gitignore'

Each repository and each directory in it can have its own .gitignore file.

Common .gitignore example
  # Generic: Temporary Files and Logs
  *~ 
  ._* 
  .DS_Store
  Thumbs.db
  ~*.docx
  ~*.xlsx
  *.log*
Project-specific .gitignore example
  # LabVIEW Metadata
  *.aliases
  *.lvlps
  .cache/
  
  # LabVIEW Binaries/Builds
  artifacts/
  builds/
  *.lvlibp

Windows Specifics

If you're using msysgit on Windows:

  • the machine's system .gitconfig file resides at %PROGRAMFILES(X86)%\Git\etc\gitconfig.
  • your user ~/.gitconfig file resides at your %HOMEPATH%

Use echo %PROGRAMFILES(X86)% and echo %HOMEPATH% from a Windows command prompt to find the specific locations.

Global .gitignore file

Set the global .gitignore file location to C:/users/{myusername}/.gitignore:

  git config --global core.excludesfile "%USERPROFILE%\.gitignore"

The above command will only set the location of the ignore file that git will use. The file has to still be manually created in that location and populated with the ignore list.

Environment Variables

Open up My Computer → Advanced System Settings → Environment Variables. Then:

  1. Add the git binary path (eg C:\Program Files (X86)\Git\bin) to the PATH environment variable
  2. Add msys to the TERM environment variable
File Permissions

If your repository is on a filesystem whose executable bits are unreliable (like FAT), git should be configured to ignore differences in file modes recorded in the index and the file mode on the filesystem if they differ only on executable bit:

  git config --local core.filemode false

and/or

  git config --global core.filemode false
Long Paths

Due to a Windows API limitation of file paths having 260 or fewer characters, Git checkouts fail on Windows with “Filename too long error: unable to create file” errors if a path is longer than the 260 characters.

To resolve this issue, please run the following command from GitBash or the Git CMD prompt:

  git config --system core.longpaths true

Merge vs Rebase

If you have divergent branches, git has different ways of reconciling them. You can learn more about this topic in the great Atlassian Tutorials.

Merge
  git config --global pull.rebase false
Rebase
  git config --global pull.rebase true
Fast-Forward
  git config --global pull.ff only
kb/scc/git/config.txt · Last modified: 2024/09/30 08:44 by alexander.elbert