Reputation: 30813
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?
Upvotes: 1328
Views: 624419
Reputation: 12381
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.
You can check if the global gitignore exists via:
git config --get core.excludesfile
Typically, it is found in these locations on different operating systems:
*nix:
~/.config/git/ignore
Windows:
%USERPROFILE%\.config\git\ignore
You may need to create the git
directory and ignore
file and tell git the location via git config --global core.excludesfile ~/.config/git/ignore
but then you can put your global ignores into that file and that's it!
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.
Upvotes: 487
Reputation: 321
You can use the default global gitignore file that is located here (in POSIX systems):
~/.config/git/ignore
If you don't want to change your git config
Upvotes: 1
Reputation: 793109
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
Upvotes: 2105
Reputation: 847
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.
Upvotes: 0
Reputation: 813
touch ~/.gitignore
Example
# Files
*.gz
*.tmproj
*.7z
# Folders
.vscode/
build/
# If folders don't work, you can still do this
.vscode/*
build/*
git config --get core.excludesfile
git config --global core.excludesfile '~/.gitignore'
Voila!!
Upvotes: 54
Reputation: 37
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)
Upvotes: -3
Reputation: 3627
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
Upvotes: 15
Reputation: 947
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.
Upvotes: 1
Reputation: 191
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
Upvotes: 12
Reputation: 3266
To create global gitignore from scratch:
$ cd ~
$ touch .gitignore_global
$ git config --global core.excludesfile ~/.gitignore_global
C:/Users/User
.gitignore_global
extensionUpvotes: 75
Reputation: 5029
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_globaland 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.
Upvotes: 384
Reputation: 8320
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.
Upvotes: 5
Reputation: 13761
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.
Upvotes: 3
Reputation: 10379
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 ?
Upvotes: 25