You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用git add命令添加并追踪名称为foo/.git/bar的文件

问题原因

Git 出于自身工作逻辑与安全限制,默认会拒绝追踪任何路径中包含 .git 目录的文件,无论该 .git 是不是真实的 Git 仓库元数据目录,该规则优先级高于强制添加参数,所以你之前的 git add --force 操作也不生效。

推荐解决方案(适配所有Git版本,无安全风险)

你的场景使用 GNU stow 部署文件,可以直接利用 stow 自带的 dot 文件适配能力避开 Git 的限制:

  • 把你当前仓库里的 foo/.git 目录重命名为 foo/dot-git,此时你的钩子文件路径为 foo/dot-git/hooks/pre-push
  • 正常执行 git add foo/dot-git/hooks/pre-push 提交即可,Git 可以正常追踪该路径下的文件
  • 后续用 stow 部署时,添加 --dotfiles 参数执行部署,stow 会自动把路径中前缀为 dot- 的目录/文件重命名为 . 开头,最终部署到目标仓库的路径依然是 .git/hooks/pre-push,完全不影响你的使用需求。

特殊方案(仅Git 2.32及以上版本支持,不推荐)

如果你一定要在仓库中保留 foo/.git/ 路径的结构,可以执行以下配置放开限制:

# 配置当前仓库允许追踪.git路径下的文件
git config core.allowDotGit true
# 强制添加目标文件
git add --force foo/.git/bar

注意该配置会放开 Git 对 .git 路径的安全防护,存在恶意代码被提交到 .git/hooks 等目录触发执行的风险,非必要不建议使用。


内容的提问来源于stack exchange,提问作者Jasha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 11:45:03