Global Git ignore

GitGlobalGitignore

Git Problem Overview


I want to set up Git to globally ignore certain files.

I have added a .gitignore file to my home directory (/Users/me/) and I have added the following line to it:

*.tmproj

But it is not ignoring this type of files, any idea what I am doing wrong?

Git Solutions


Solution 1 - Git

You need to set up your global core.excludesfile configuration file to point to this global ignore file e.g:

*nix or Windows git bash:

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

Windows cmd:

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

Windows PowerShell:

git config --global core.excludesFile "$Env:USERPROFILE\.gitignore"

For Windows it is set to the location C:\Users\%username%\.gitignore. You can verify that the config value is correct by doing:

git config --global core.excludesFile

The result should be the expanded path to your user profile's .gitignore. Ensure that the value does not contain the unexpanded %USERPROFILE% string.

Important: The above commands 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. (from muruge's comment)

You can read about the command at https://docs.github.com/en/get-started/getting-started-with-git/ignoring-files#configuring-ignored-files-for-all-repositories-on-your-computer

Solution 2 - Git

Before reconfiguring the global excludes file, you might want to check what it's currently configured to, using this command:

git config --get core.excludesfile

In my case, when I ran it I saw my global excludes file was configured to

~/.gitignore_global
and there were already a couple things listed there. So in the case of the given question, it might make sense to first check for an existing excludes file, and add the new file mask to it.

Solution 3 - Git

Although other answers are correct they are setting the global config value whereas there is a default git location for the global git ignore file:

*nix:

~/.config/git/ignore

Windows:

%USERPROFILE%\git\ignore

You may need to create git directory and ignore file but then you can put your global ignores into that file and that's it!

Source

> Which file to place a pattern in depends on how the pattern is meant to be used.

> * Patterns which a user wants Git to ignore in all situations (e.g., backup or temporary files generated by the user’s editor of choice) generally go into a file specified by core.excludesFile in the user’s ~/.gitconfig. Its default value is $XDG_CONFIG_HOME/git/ignore. If $XDG_CONFIG_HOME is either not set or empty, $HOME/.config/git/ignore is used instead.

Solution 4 - Git

To create global gitignore from scratch:

$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
  1. First line changes directory to C:/Users/User
  2. After that you create an empty file with .gitignore_global extension
  3. And finally setting global ignore to that file.
  4. Then you should open it with some kind of notepad and add the needed ignore rules.

Solution 5 - Git

  1. Create a .gitignore file in your home directory
touch ~/.gitignore
  1. Add files/folders to it

Example

# Files
*.gz
*.tmproj
*.7z

# Folders
.vscode/
build/

# If folders don't work, you can still do this
.vscode/*
build/*
  1. Check if a git already has a global gitignore
git config --get core.excludesfile
  1. Tell git where the file is
git config --global core.excludesfile '~/.gitignore'

Voila!!

Solution 6 - Git

From here.

If you create a file in your repo named .gitignore git will use its rules when looking at files to commit. Note that git will not ignore a file that was already tracked before a rule was added to this file to ignore it. In such a case the file must be un-tracked, usually with :

git rm --cached filename

Is it your case ?

Solution 7 - Git

If you use Unix system, you can solve your problem in two commands. Where the first initialize configs and the second alters file with a file to ignore.

$ git config --global core.excludesfile ~/.gitignore
$ echo '.idea' >> ~/.gitignore

Solution 8 - Git

Remember that running the command

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

will just set up the global file, but will NOT create it. For Windows check your Users directory for the .gitconfig file, and edit it to your preferences. In my case It's like that:

[core]
  excludesfile = c:/Users/myuser/Dropbox/Apps/Git/.gitignore

Solution 9 - Git

I am able to ignore a .tmproj file by including either .tmproj or *.tmproj in my /users/me/.gitignore-global file.

Note that the file name is .gitignore-global not .gitignore. It did not work by including .tmproj or *.tmproj in a file called .gitignore in the /users/me directory.

Solution 10 - Git

You should create an exclude file for this. Check out this gist which is pretty self explanatory.

To address your question though, you may need to either de-index the .tmproj file (if you've already added it to the index) with git rm --cached path/to/.tmproj, or git add and commit your .gitignore file.

Solution 11 - Git

on windows subsystem for linux I had to navigate to the subsystem root by cd ~/ then touch .gitignore and then update the global gitignore configuration in there.

I hope it helps someone.

Solution 12 - Git

AMENDMENT TO QUESTION (sorry I'm not yet allowed to comment anywhere) from:

Steve Jorgensen answered Apr 5'14 at 19:52

For Windows only!

If you have yourself set an environment variable HOME (it seems Windows itself does not set it, but instead the „HOME“ variable on Windows is USERPROFILE), the path for the default global git ignore file is:

$HOME\.config\git\ignore

as on Unix systems. Without it should be %USERPROFILE%\git\ignore, see answer from Steve Jorgensen (I cannot test it, as I have set HOME and do require it).

Solution 13 - Git

Another possible solution if the .gitignore approach isn't working for you is to:

git update-index --skip-worktree path_to_file

That will ignore changes to that file, both local and upstream, until you decide to allow them again with:

git update-index --no-skip-worktree path_to_file

You can get a list of files that are marked skipped with:

git ls-files -v . | grep ^S

Note that unlike --skip-worktree, the --assume-unchanged status will get lost once an upstream change is pulled.

Solution 14 - Git

If you're using VSCODE, you can get this extension to handle the task for you. It watches your workspace each time you save your work and helps you to automatically ignore the files and folders you specified in your vscode settings.json ignoreit (vscode extension)

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMild FuzzView Question on Stackoverflow
Solution 1 - GitCB BaileyView Answer on Stackoverflow
Solution 2 - GitLawrenceView Answer on Stackoverflow
Solution 3 - GitSteve JorgensenView Answer on Stackoverflow
Solution 4 - GitPhoeraView Answer on Stackoverflow
Solution 5 - GitPrerak MannView Answer on Stackoverflow
Solution 6 - GitLaGrandMereView Answer on Stackoverflow
Solution 7 - GitPurkhalo AlexView Answer on Stackoverflow
Solution 8 - Gitmouse m.d.View Answer on Stackoverflow
Solution 9 - GitSri SankaranView Answer on Stackoverflow
Solution 10 - GitNicView Answer on Stackoverflow
Solution 11 - GitbboydfloView Answer on Stackoverflow
Solution 12 - GitPeter SulzerView Answer on Stackoverflow
Solution 13 - GitJose PaezView Answer on Stackoverflow
Solution 14 - GitmarcdomainView Answer on Stackoverflow