如何在 git safe.directory 上递归添加目录?

adi*_*enc 37 git bash ubuntu cve-2022-24765

根据此QAsafe.directory由于git 上发现了最新的 CVE ,我们可以使用参数添加要标记为白名单的目录。但似乎没有办法递归添加某些目录。

我有很多存储库要添加,所以我想使用递归添加(如果该功能存在)。存储库主要放置在我在 ubuntu 上安装的 NTFS 磁盘上,因此内部文件的所有者始终是 root。如果登录的用户与 git 目录的所有者不匹配,最新的更新似乎会通过显示此类错误来限制 git 操作fatal: unsafe repository ('/media/data1/project1/si/project' is owned by someone else

小智 63

从 Git 2.36 开始,您还可以将代表“全部”的 * 添加到 safe.directory 中。它并不像您要求的那样递归,但根据您的情况可能会有所帮助,即

git config --global --add safe.directory "*"
Run Code Online (Sandbox Code Playgroud)

请参阅https://github.blog/2022-04-18-highlights-from-git-2-36/并搜索 safe.directory。

编辑:根据 zcoop98 的建议,我们应该在 '*' 周围添加双引号。

  • 根据您的 CLI,您可能需要将 `*` 放在单引号 `'*'` 或双引号 `"*"` 中。 (14认同)
  • 我收到此错误``参数数量错误,应该是 2``` (3认同)

小智 12

我现在所做的(但可能不是完美的解决方案)是查找所有.git文件夹并通过命令添加它们find

find /full/path -name '.git' -type d -exec bash -c 'git config --global --add safe.directory ${0%/.git}' {} \;
Run Code Online (Sandbox Code Playgroud)

需要提醒的是,find命令中需要添加完整路径,这样才会解析完整路径。

  • 如果您有太多子目录(像我一样),则值得添加“-maxdepth”选项以加快执行速度。 (2认同)