We've seen how we can tell Git which files that auto ignore inside of our
working directory, and we did that by putting a gitignore file in the root of
our working directory and even storing and committing that to our repository.
But what if we find ourselves ignoring the same files over and over and all of
our different projects in each of our different Git repositories?
Or as we saw in the last movie some of the files that we want to ignore are
operating specific files, we want to ignore them all the time, because they are
just generally the kind of thing that we don't want to track.
Well, to do this, we're going to configure Git to globally ignore some files.
That means if we ignore those files in all repositories, not just in any one specific
repository, and the settings for this global ignore are not going to be inside
the repository, they're going to live outside of it, right?
It's part of our git configuration, not our project configuration, but our git configuration.
So what that means is it's not going to be stored in the repository. People who
use our repositories, if someone downloads it and starts working with it, they're
not going to get it, and so we've traded repository specific ignores for user
specific ignores. They exist only on my machine. Now that's good because it
means that I can configure exactly the way I like it, I can ignore the files
that I want to ignore, and then we don't have to worry about what someone else
wants to ignore, okay? I can just ignore my preferences.
Now that can be good, for example, if I'm working on a Mac and someone
else using their repository is working on Windows, then we can each have
our own gitignore files that are specific to our operating system.
We don't have to share those.
But on the other hand, if I've told it to ignore all log files, files ending
in .log, and that's in my global config but not the project config, and then
someone else starts using the repository, then they're going to always be
prompted by Git to try and track the log file, that is unless they also ignore the log file.
You just want to keep in mind the difference and consider whether you want an
ignored file to be listed in your user-specific ignores or your
repository-specific ignores. Okay, so how to actually do the ignoring?
Well, we do that using git config. We saw this back when we were setting up
Git at the beginning.
We do git config with the global option and then core.excludesfile, and we tell
it where the file is.
So the file can be named anything we want, we can locate it wherever we want, we
just have to tell Git in its config file, hey, this is the file you should use
for globally ignoring things. Let's try creating one.
So right now I'm inside my explore_ california directory, where I'm going to put
my global ignore is in my user directory, right here. That's where my git config
was before, if you remember ls -la and inside Users/kevinskoglund, you'll see
that's where I've got my global gitconfig file.
So I'm going to put the gitignore file right alongside it.
You can create a number of different ways, you can use a Text Editor.
I'm going to use the nano Text Editor that's in Mac OS X and in Unix--it's just
a real simple Text Editor--and tell it that it ought to go to Users/kevinskoglund
and create a file called .gitignore_global.
Now again, you can call it anything you want, so we'll be just call it gitignore.
I'm going to call it gitignore_global, so it is very clear that it's a global file.
So inside that file then we can put whatever things we want to ignore.
Because I'm on a Mac, the things that I want to ignore most often are .DS_Store
and .Trashes and .Spotlight-V100, those are just a couple of things that often
pop up that need to get ignored, and there are files that the operating system is
using to keep track of various things.
So I'm just going to go ahead and close that now, say yes, and let's save it to
that file name that I gave it.
And now if we check again la / Users/kevinskoglund, there we are.
Now you can see that that file is there, and then the last thing I need to do is
tell git config about that file, so git config --global core.excludesfile and
then the path to the file. Let me just clear the screen, so it's clear.
The short version in Unix, it just uses this Tilde that represents your user
directory so you could say ~/.gitignore _global, that's what I would probably
do, but you can also do it with a full path, which is what you would do on
Windows, and we'll put in the full thing, kevingskoglund, that's the full path to get there.
So when we hit Return it'll add to our config file.
If we take a look at that config file cat /Users/kevinskoglund/.gitconfig, we
can say that it added that excludes file right here.
So, now that's the file that we'll be using for global gitignores, so I'll
ignore those files in every repository on my machine.