由于权限,无法将所有文件添加到git

时间:2008-12-10 14:49:07

标签: git

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

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

没关系。该文件恰好位于此目录中并由root拥有。我想添加所有其他文件。有没有办法做到这一点,而无需手动手动添加每个文件?

我知道我可以添加要排除或.gitignore的文件,但是我想让它根据权限忽略一些东西(这样的其他文件很可能会在目录中结束,并添加它们一直到.gitignore是痛苦的。)

12 个答案:

答案 0 :(得分:39)

使用git add --ignore-errors .

这仍然会给不可读的文件带来错误,但不是致命的文件。其他文件将被添加。

答案 1 :(得分:4)

如果您将该文件添加到.gitignore文件中会有帮助吗?因此,所有其他文件都将被版本化并且该文件将被忽略(除非您需要它)。

答案 2 :(得分:4)

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

为我修好了。上半场固定所有权,(有人以root身份登记,顽皮),后半部分犯了非致命错误。下半部分本身帮助我追踪root所拥有的目录。

答案 3 :(得分:3)

只需排除该文件即可。您可以将.mysql_history添加到.gitignore文件,也可以将其添加到.git/info/exclude

.gitignore添加条目将使用repo传播设置(因为.gitignore与repo一起存储);将其添加到.git/info/exclude会使其“个性化”,因为此文件与repo一起传播。无论哪种方式,.mysql_history和朋友都会忽略git-add

您可以在此man page上阅读有关使用Git忽略文件的更多信息。

答案 4 :(得分:3)

正如@ Dhanuka777在注释中指出的那样,如果您使用的是Visual Studio或Unity,则必须在git add之前关闭所有Visual Studio和Unity实例。

答案 5 :(得分:1)

我正在使用@matli的解决方案,但有时仍然遇到麻烦。 我最终使用

git add --ignore-errors --force .

答案 6 :(得分:1)

关闭您的IDE或使用您要上传的相关文件的任何内容解决了我的问题

答案 7 :(得分:0)

重新启动系统(Windows)解决了我的问题。

答案 8 :(得分:0)

关闭所有为我工作的Visual Studio实例

答案 9 :(得分:0)

请指定要添加的文件名; 例如:

git add index.html

我希望这对您也有帮助

答案 10 :(得分:0)

检查是否有一些与在后台运行的文件相关的任务/过程。

我意识到试图清空我的Temp文件夹。当无法删除文件时,Windows会通知您与之相关的过程。杀死该进程解决了我的问题。

这就是通常完成IDE或重新启动系统的原因。

答案 11 :(得分:0)

chmod 755 file.xxx

对我有用。