120

This is mostly a git question. I want to commit my ipython notebooks but gitignore the checkpoints.

The repo has multiple folders which each have ipython notebooks, therefore just ignoring a single directory does not solve it. I want to keep adding new folders with notebooks inside without worrying about it.

My hunch is that there must be a way to use some wildcard to gitignore anything that is in a folder that is called */.ipynb_checkpoints/ but haven't been able to figure it out.

So, how can I git ignore all ipython notebook checkpoints in a repository, wherever they are?

Thomas K
  • 35,785
  • 7
  • 76
  • 82
sapo_cosmico
  • 4,762
  • 6
  • 32
  • 51

8 Answers8

156

If you add to .gitignore:

.ipynb_checkpoints

(no slashes anywhere), any file or directory in the repo with that name will be ignored. Paths are only checked if you include /.

From this answer you can also have a global gitignore for your computer:

git config --global core.excludesfile '~/.gitignore'
echo '.ipynb_checkpoints' >> ~/.gitignore
Community
  • 1
  • 1
minrk
  • 34,068
  • 9
  • 87
  • 83
  • 4
    This seems like it should work, but for some reason is not working for me. From the root repository folder, my checkpoints are located in `notebooks/.ipynb_checkpoints/`, and I cannot for the life of me ignore them! I tried adding that path, with and without the trailing slash to my .gitignore. I tried your suggestion. I tried adding lots of stars. Any ideas? – Engineero Aug 23 '17 at 20:42
  • @Engineero have you told git where your `.gitignore` file is with `git config` ? – Ciprian Tomoiagă Oct 17 '17 at 12:33
  • 6
    @Engineero: have you already commited some of it ? `.gitignore` can't ignore stuff after the fact (if they are already committed) – Mr_and_Mrs_D Oct 24 '17 at 10:17
  • @CiprianTomoiaga it is finding my `.gitignore` just fine, and other files and folders will be ignored. I don't know why this doesn't work, but I found something that does. I will add it as an answer. – Engineero Oct 24 '17 at 15:32
  • @Mr_and_Mrs_D I had that problem too, but I just de-indexed the files and tried something else in `.gitignore`. I was eventually able to make it work with something that I will add as an answer. – Engineero Oct 24 '17 at 15:33
  • @Engineero none of the solutions work for me here. Did you get it to work? – imsrgadich Jan 06 '18 at 15:19
  • Has anyone found a working solution yet? None of `.ipynb_checkpoints` or `*/.ipynb_checkpoints/*` seems to be working – nishant Jul 11 '18 at 11:03
  • Using `.ipynb_checkpoints` in the `.gitignore` file will works as long as none of those files are already in the git history. I was confused why it did not seem to work until I realized someone had already commit checkpoint files. Once I removed those everything worked fine. I simply used `git rm .ipynb_checkpoints/*` because the files weren't large and I don't care if they are in the history. If I had more time I would go through the process of removing the entire folder from the history. – Steven C. Howell Jun 24 '20 at 20:45
28

I would recommend to use **/*.ipynb_checkpoints/ in your .gitignore file.

Anton Karazeev
  • 514
  • 6
  • 13
14

Add to your .gitignore:

.ipynb_checkpoints
*/.ipynb_checkpoints/*

And you should be good to go.

djwbrown
  • 861
  • 1
  • 9
  • 15
6

Some times you may forget that you are already tracking the file in your git repository (as it was in my case). So you may have to untrack it first

git rm --cached Folder_with_ipynb/.ipynb_checkpoints/news-checkpoint.ipynb

and then add to your .gitignore the line:

*/.ipynb_checkpoints/*.ipynb
Alexander
  • 2,886
  • 6
  • 25
  • 39
4

If you haven't pushed your code yet, add

.ipynb_checkpoints

to your .gitignore

If you have already pushed your code before, add .ipynb_checkpoints to your .gitignore. This will ensure that .ipynb_checkpoints will be ignored in the future but doesn't remove your old .ipynb_checkpoints

You have to manually remove the cache in every folder in the respective branch. Go to the folder that has the .ipynb_checkpoints at first and do

git rm -r --cached .ipynb_checkpoints
  • I had this problem and looked through the various answers but this one solved it for me. In fact, I found the solution independently first and only saw this when checking. To be clear, if you have persistent files in `git status` even after you include their folder in `.gitignore`, check whether these files have previously been committed. The easiest way to do that is with the `git rm` command above. The `--cached` flag will ensure you retain a local copy. – pandamonium Nov 25 '20 at 10:28
2

This works.

Folder/.ipynb_checkpoints/*.ipynb
Merlin
  • 19,645
  • 34
  • 108
  • 190
0

For some reason, none of the current answers worked for me. I was eventually able to get git to ignore all of my checkpoint files (and any other unwanted hidden files and folders) by adding:

.*  # ignore all hidden files and folders
!/.gitignore  # explicitly do not ignore .gitignore

to my .gitignore file in the repo's base directory. This is a broad sweep, and will be a pain to maintain if you want to keep hidden files in your repo, but I have no need for any except my .gitignore, so it works for me!

Engineero
  • 10,387
  • 3
  • 41
  • 65
  • Yes for me too none of the above works. Even what you proposed. When a checkpoint is created it appears in git status. – pebox11 Jun 14 '19 at 22:28
-4

I used the command rm -rf .ipynb_checkpoints. This worked for me.

Harry J
  • 1,571
  • 3
  • 10
  • 23