由于权限问题,无法将所有文件添加到Git

50

我想将当前目录中的所有文件添加到git:

git add .
error: open(".mysql_history"): Permission denied
fatal: unable to index file .mysql_history

好的。那个文件恰好在这个目录中并且被root拥有。我想添加所有其他文件。有没有一种方法可以不用手动逐个添加每个文件来完成这个任务?

我知道我可以将该文件添加到排除列表或.gitignore中,但我希望它根据权限忽略掉这些文件(很可能会有其他类似的文件出现在该目录中,而每次都将它们添加到.gitignore中很麻烦)。

16个回答

74

使用git add --ignore-errors .

这仍会针对不可读的文件(们)给出错误,但不是致命的错误。其他文件将被添加。


23
如果您正在使用VS,这种情况可能会发生。在我的情况下,我不得不关闭所有的Visual Studio实例。关闭IIS Express并重新启动Visual Studio也可以解决问题。 - Dhanuka777
1
@Dhanuka777 这对我来说是个答案!比创建 .gitignore 文件并像其他建议一样添加文件要容易得多。谢谢! - Burkely91

19
关闭你的集成开发环境或任何使用你想要上传的相关文件的程序可以解决我的问题。

8

正如@Dhanuka777在评论中指出的,如果你正在使用Visual Studio或Unity,你需要在执行git add .之前关闭所有的Visual Studio和Unity实例。


有其他的方法吗? - Shuvo Sarker

6

如果您将该文件添加到.gitignore文件中,这样其他所有文件都将被版本化,而该文件将被忽略(除非您需要它),这样做是否有帮助?


4
只需排除该文件。您可以将 .mysql_history 添加到 .gitignore 文件中,或将其添加到 .git/info/exclude 中。向 .gitignore 中添加条目将使该设置在存储库中传播(因为 .gitignore 存储在存储库中);将其添加到 .git/info/exclude 中使其“个人化”,因为此文件不会随存储库一起传播。无论哪种方式,.mysql_history 都将被 git-add 和其他工具忽略。您可以在这个手册页面上了解有关使用 Git 忽略文件的更多信息。

4
sudo chown $(whoami): .git/objects/ -R; git add --ignore-errors .

你为我解决了问题。第一部分修复了所有权(有人以root身份检入,不好),而第二部分使错误不致命。仅仅第二部分就帮助我跟踪到由root拥有的目录。


2

我曾经使用@matli的解决方案,但有时仍然会出现问题。

最终我采用了

git add --ignore-errors --force .

1
关闭所有Visual Studio的实例对我有帮助。

1

您可以更改目录权限以忽略此错误: 例如:sudo chmod -R 777 目录


1
在我的情况下,我试图将 Excel 文件添加到 Git 中,但这些 Excel 文件已经被打开了,因此 'git add' 尝试添加 $filename.xlsx(在我们正在使用该文件的打开实例旁边创建的文件)。关闭 Excel 文件对我有用。

1
我在 Windows 11 机器上遇到了同样的问题。在尝试了已经解决错误的解决方案后,我晚些时候才检查到这条消息。我想补充说明的是,这个方法对我也起作用了。 - kraftwerk

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