如何让Git不跟踪以"~"结尾的所有文件?

78

我正在使用Gedit,每次保存文件时,Gedit都会创建一个副本,该副本的名称总是以~结尾。问题是,Git始终尝试跟踪这些文件,但我不想让它这样做!是否有一种方法仍然可以使用git add .,但只添加那些不以~结尾的文件?


2
不需要Arthur Denting。据我所知,将 .gitignore 加入到 gitignore 中是有效的;我通常这样做。 - ruffin
2
回复:编辑。忽略.gitignore并不是一个好主意。我非常确定这些设置在克隆存储库的任何地方都很有用。我们将忽略文件放在版本控制中,并且对此感到非常满意,因为只需要一个开发人员进行设置即可。 - Marcin Koziński
我也使用gedit,它会创建备份文件。如果你想让gedit不这样做 - 更改程序的设置:编辑>首选项>编辑器>取消选中“创建备份副本”标志。之后 - 你将不会看到任何~波浪线文件。 - kurumkan
5个回答

104

gitignore 是一个好的选择。只需在你的仓库根目录下的 .gitignore 文件中添加 *~ 即可。


2
这是一个更好的解决方案,因为对于每个程序都进行配置以不创建~文件(例如emacs)很麻烦。 - Tahir Hassan
@TahirHassan 但更好的解决方案是什么?我建议的第一件事是创建一个.gitignore文件。如果您还想清理本地存储库,使其不会到处都是~文件,我也会解释如何做到这一点。;^) 这样做并不意味着您没有保障。您只需要通过波浪线文件节省一次编辑,而当您已经在使用git时,这并没有太多实际帮助。话虽如此,@filmor比我早几秒钟就说OP应该使用.gitignore了。 - ruffin

60

您需要一个gitignore文件

如果您想要删除以波浪符结尾的所有内容(这应该是安全的;我无法想象出任何合理的用例,其中这是不好的),请确保以下行位于存储库文件夹层次结构顶部的 .gitignore 文件中:

*~

如果你也想摆脱本地文件系统中散落的波浪线文件,那么你可以这样做。最好让Gedit把备份文件放在其他地方。我使用最多的两个编辑器JEdit和VIm都有这样的设置,这样保持干净比加载gitignore更好。

不幸的是,Gedit没有这个选项。它能做的最好的就是关闭~备份。 在你担心之前,最坏的情况是你会失去你保存之前的内容 这不是最坏的情况--这就是你为什么要把它放在git repo里的原因,对吧?

注意:如果你想在本地保留带有~后缀的文件,请保留。上面设置的.gitignore将防止你意外共享它们。

您可以这样关闭以~结尾的备份

为了防止Gedit在未来创建这些备份,打开Gedit,打开首选项对话框(编辑>首选项),选择编辑器选项卡,在“保存前创建文件的备份副本”选项中取消勾选,并单击“关闭”。完成此操作后,Gedit将不再制作到处都是波浪线的备份。


6
为什么你要关闭备份?它们在过去无数次为我挽救了危机。 - suvayu
匿名的踩贴者——能解释一下吗?现在有更好的方法让Gedit保存备份文件而不会在您的文件系统上留下痕迹吗? - ruffin
如果备份多次拯救了你,就不要排除它们。我们的数据库非常庞大,magento无法处理备份。我们使用mysqldump来完成这个任务。在这种情况下,你可以排除它。 - SPRBRN
这个有用的答案告诉你如何关闭gedit的备份功能:http://askubuntu.com/a/90520/453324 - BenKoshy
@ruffin 你说得完全正确!第一次阅读您的答案时,我完全错过了链接,但当我单击它时,我发现它只是重复了您已经说过的话! - BenKoshy
显示剩余2条评论

8

补充一下@filmor所说的,您可以创建一个全局gitignore文件,以便所有存储库都会忽略备份文件:

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

这将告诉Git在您的$HOME路径中搜索.gitignore_global文件,您可以在其中放置*~规则。


1

补充答案:
如果您有带有扩展名的波浪线文件,例如Sketchup,它创建以“~.skp”结尾的备份文件,则需要在.gitignore文件中添加*~.skp或者更改 skp 为您正在使用的软件的扩展名。 或者如果您确定所有以波浪线结尾的文件及其所有扩展名都可以安全忽略,则使用*~.*


0
为什么要添加 .gitignore 文件,而不是直接编辑纯文本文件 .git/info/exclude 呢?"当决定是否忽略一个路径时,git 通常会从多个来源检查 gitignore 模式" https://www.kernel.org/pub/software/scm/git/docs/gitignore.html 如果在你的 git 存储库的 .git/info/exclude 文件中添加 *~ 到一行中,Git 将忽略该模式和所有以波浪线结尾的文件。

5
我不是那个给回答点踩的人,但这个回答不太好。".git"文件夹并不与所有仓库用户共享,而".gitignore"文件默认会(特定项目可能会更改)。通常,"*~"文件是临时备份文件,你不希望任何人因为失误而将它们添加进来,所以应该对所有仓库用户进行设置。 - user2326568

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