如何在代码库中任意位置忽略IPython笔记本的检查点?

179

这主要是一个git问题。我想提交我的ipython笔记本,但忽略检查点。

该存储库有多个文件夹,每个文件夹都有ipython笔记本,因此仅忽略单个目录并不能解决问题。我想继续添加包含笔记本的新文件夹而不用担心它。

我的直觉是必须有一种方法可以使用通配符来gitignore任何在名为*/.ipynb_checkpoints/的文件夹中的内容,但是我还没有找到方法。

那么,我如何在整个存储库中忽略所有ipython笔记本的检查点呢?

8个回答

225
如果您添加到.gitignore文件中:
.ipynb_checkpoints

如果你在代码库中创建了一个文件或目录名称为“无斜杠”,那么它将被忽略。只有在包含/时才会检查路径。

这个答案中,你还可以为你的计算机创建全局gitignore:

git config --global core.excludesfile '~/.gitignore'
echo '.ipynb_checkpoints' >> ~/.gitignore

8
这似乎应该可行,但出于某种原因对我不起作用。从根存储库文件夹开始,我的检查点位于 notebooks/.ipynb_checkpoints/,但我无论如何都无法将它们忽略!我尝试将该路径添加到我的 .gitignore 中,带或不带尾随斜杠。我尝试了你的建议,也尝试添加了很多星号。有什么想法吗? - Engineero
@Engineero 你是否已经使用 git config 命令告诉 Git 你的 .gitignore 文件的位置了? - Ciprian Tomoiagă
9
你已经提交了一些内容吗?.gitignore 无法忽略之前已经提交的内容。 - Mr_and_Mrs_D
@Engineero 这里的解决方案都对我无效。你成功让它起作用了吗? - Mr. Unnormalized Posterior
有人找到可行的解决方案了吗?.ipynb_checkpoints*/.ipynb_checkpoints/*似乎都不起作用。 - nishant
显示剩余3条评论

37
我建议在您的 .gitignore 文件中使用 ** / *.ipynb_checkpoints/

29

如果您还没有提交您的代码,请添加

.ipynb_checkpoints

添加.ipynb_checkpoints到你的 .gitignore 文件中。如果你之前已经推送了代码,那么这将确保 .ipynb_checkpoints 在未来被忽略,但不会删除旧的 .ipynb_checkpoints。

你需要在相应分支的每个文件夹中手动删除缓存。首先进入具有 .ipynb_checkpoints 的文件夹并执行以下操作:

git rm -r --cached .ipynb_checkpoints

我曾经遇到过这个问题,查看了各种答案,但只有这个对我有效。实际上,我最初是独立找到了解决方案,后来才看到这个答案。明确一点,如果你在 .gitignore 中包含了文件夹,但 git status 仍然显示这些文件,则需要检查这些文件是否已经被提交。最简单的方法是使用上面的 git rm 命令。--cached 标志将确保您保留本地副本。 - pandamonium

22

请将以下内容添加到你的.gitignore文件中:

.ipynb_checkpoints
*/.ipynb_checkpoints/*

那么你就可以开始了。


8

有时候你可能会忘记你已经在git仓库中跟踪了该文件(就像我的情况一样)。因此,你可能需要先取消跟踪它。

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

然后在你的.gitignore文件中添加以下内容:

*/.ipynb_checkpoints/*.ipynb

2

出于某些原因,目前的所有答案都不能解决我的问题。最终我成功让Git忽略了所有的检查点文件(以及其他不需要的隐藏文件和文件夹),方法是添加如下内容:

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

.gitignore文件添加到存储库的基本目录中。这是一个广泛的清除,如果你想在存储库中保留隐藏文件,则维护起来会很麻烦,但我除了我的.gitignore之外没有任何需要,所以对我有用!

1
对我来说也是一样,以上的方法都不起作用。甚至你提出的那个也是。当创建一个检查点时,它会出现在git状态中。 - pebox11
1
@pebox11 我也是这样,似乎不设检查点是不可能的,但最终 Ashok Kumar 关于缓存文件的答案帮了我。 - Gero

2

这个有效。

Folder/.ipynb_checkpoints/*.ipynb

-7

我使用了命令rm -rf .ipynb_checkpoints。这对我起作用了。


9
删除文件夹,而不是忽略它。这是一个具有误导性的回答。 - Chandra Kanth
这个答案对于新用户来说可能是有潜在危险的。删除文件夹和将其添加到.gitignore中是两件非常不同的事情。 - liakoyras

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接