views:

3270

answers:

5

When doing:

>git status

It shows a big list of .pyc files under "untracked files". I don't want it to show these, as it adds noise.

In other words, how do I make git ignore .pyc files all the time and for all projects?

EDIT

I'm not asking for a way to spread my ignored files to other people, I really just mean "for all projects", meaning I don't want to configure each new project to ignore .pyc files.

UPDATE

I should add that I'm working on windows, and my git is msysgit

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.

Is .gitconfig a file or a folder? I don't have such a thing in my home directory (C:\users\<myusername>\)

UPDATE2

Thanks everybody for the responses,

I solved the issues by using:

>git config --global core.excludesfile c:\git\ignore_files.txt

and putting *.pyc in c:\git\ignore_files.txt

A: 

If I recall, there is a way to setup a global .gitignore... But the problem with that is you can't share it with other people (that is, other people who pull your code will see the .pyc files).

So, IMHO, it's better to just add it to the .gitignore for each project you start. I keep a stock .gitignore around for just that reason.

<flamebait>
Or you could switch to bzr, which comes with a sensible default list of things to ignore ^_^
</flamebait>

David Wolever
`bzr` is written in Python. It would be unexpected if it couldn't handle Python specific stuff well.
J.F. Sebastian
That's true. I don't know the full extent of the defaults, but I know they also handle things like Vim/Emacs swap/backup files, .o files, etc.
David Wolever
one would think it would be sensible for bzr to ignore .DS_Store files one mac, but it doesn't, svn does ad I recall. I think it only ignores pyc files by default is it's written in python and probably in emacs too :)
Vasil
Why would the implementation language of bzr dictate what files it ignores? By that logic, Git should ignore *.o files by default.
mipadi
+5  A: 

Put in the file ~/.gitignore:

*.pyc

Run:

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

I agree with @David Wolever this option should be used with caution if ever.

The ~/.gitignore ("%HOME%\.gitignore" on Windows) is just a convention you can use any filename you like e.g., "c:\docs\gitignore.txt".

J.F. Sebastian
A: 

Couldn't you add

*.pyc

to your .gitignore?

gms8994
`.gitignore` for a git repository doesn't work for "all the time and for all projects".
J.F. Sebastian
well I'm sorta newb to git
hasen j
+21  A: 

As mentioned in gitignore, git has 3 ignore files:

  • Patterns which should be version-controlled and distributed to other repositories via clone (i.e., files that all developers will want to ignore) should go into a .gitignore file.

(that takes care of all time: if one clones your repo, it will get the .gitignore file)

  • Patterns which are specific to a particular repository but which do not need to be shared with other related repositories (e.g., auxiliary files that live inside the repository but are specific to one user's workflow) should go into the $GIT_DIR/info/exclude file.

(not interesting in your case)

  • 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.

(takes cares of all projects, but not all time since it is not replicated when one clones your repo.)

"All time for all projects" would means for instance a custom shell for creating new git projects, with a custom .gitignore as first file part of the first commit...

VonC
Really clear answer. +1
Paul
+1: Comprehensive answer. Except you should mention that `core.excludesfile` could be set *per project* as well as global setting.
J.F. Sebastian
+7  A: 
git config --global core.excludesfile "c:\program files\whatever\global_ignore.txt"

Then, add

*.foo

to that file.

Bombe
this worked for one project, but not for all projects
hasen j
Oops. Use “git config --global core.excludesfile …” to set it in Git’s global configuration. That should work for all projects.
Bombe