15

When I cloned a repo from GitLab to local, it along with source code it also pulled a file in the root folder caller .gitignore. There is also a folder called .git which contains a directory in info contains a file called exclude. Which one is the one that does the ignore (to me ignore and exclude mean the same)? Is it the ignore or exclude?

sergej
  • 17,147
  • 6
  • 52
  • 89
newb7777
  • 517
  • 5
  • 22
  • 1
    Ignore what vs exclude what? Both files serve a purpose, but you are not being clear about what purpose you are looking for. – Mad Physicist Jul 10 '17 at 16:41
  • You should not touch whatever is in `.git`. `.gitignore` is something you are providing. The `.git` files are not supposed to be manually modified. – Eugene Sh. Jul 10 '17 at 16:46
  • 1
    @MadPhysicist I think the question is very clear. newb7777 just want to know what the purpose is of the two different files. – klutt Jul 10 '17 at 16:50
  • 1
    Possible duplicate of [When would you use .git/info/exclude instead of .gitignore to exclude files?](https://stackoverflow.com/questions/22906851/when-would-you-use-git-info-exclude-instead-of-gitignore-to-exclude-files) – sergej Jul 10 '17 at 16:53
  • @klutt. I suppose you are right. I should have voted to close as a dupe instead of unclear. – Mad Physicist Jul 10 '17 at 16:58
  • 1
    @EugeneSh. - That advice is not applicable to the `info/exclude` file – Mark Adelsberger Jul 10 '17 at 17:40

2 Answers2

28

They both contain "ignore rules" - filename patterns for which matching untracked files should be ignored.

The difference is that rules in .gitignore are shared through the repo, whreas rules in info/exclude are not. So if for some reason you need to locally ignore certain paths in a single clone, you would use info/exclude; but if a path should be ignored in all clones, you would use .gitignore

Mark Adelsberger
  • 42,148
  • 4
  • 35
  • 52
  • 2
    To be clear: the `info/exclude` file you got when you cloned the repo *is not* a copy of the corresponding file on the origin. It is newly-created by git as a place to put rules specific to the new clone. – Mark Adelsberger Jul 10 '17 at 17:41
  • Yes that is correct. The exclude is newly created when i clone the repo from remote repo. `.gitignore` is the one from GitLab. – newb7777 Jul 10 '17 at 20:44
  • 1
    if you have both files in the local repo, `.gitignore` and `info/exclude` which one takes precedence? This situation may arise when you are cloning someone else repository to your local repository and have updated your `info/exclude` file with your exclude list. – newb7777 Jul 11 '17 at 06:49
  • 2
    `.gitignore` takes higher precedence. – Mark Adelsberger Jul 11 '17 at 12:22
-4

Although the question is not about which is better ".gitignore" or "info/exclude", one thing to note is "gitignore" is instantaneous than exclude. It takes effect immediately during stating process versus "gitignore" takes effect in the beginning when you clone a repository.

newb7777
  • 517
  • 5
  • 22