使用 git add 添加除一个目录外的所有文件

Moh*_*Moh 23 git

我正在尝试使用以下命令将所有文件添加到我的 git 索引中

git add -A
Run Code Online (Sandbox Code Playgroud)

但是,有一个包含非常大文件的目录会导致此错误:

fatal: confused by unstable object source data for 9f8c02a8d2a04d7fffed08b299a0cb8996ab7ecb
Run Code Online (Sandbox Code Playgroud)

因此,添加过程被破坏了!我如何告诉 git 我想在添加其他所有内容的同时排除这个目录?可用的在线解决方案首先添加所有内容,然后删除一些文件。显然,我不能这样做,因为 git 在该特定目录中添加文件时崩溃。

Elp*_*Kay 58

如果您的 Git 版本足够新,

git add -- . ':!<path>'
Run Code Online (Sandbox Code Playgroud)

.表示全部在当前目录下,':!<path>'表示排除路径。所以这意味着添加所有除了path.

  • @Anatoly 有关“--”的更多信息,请参见 /sf/answers/4051483271/ 一般来说,它似乎意味着“选项结束”。而且,这里它是完全可选的。 (3认同)
  • @Moh 1.7.1 太旧,无法支持此功能。试试`ls -1 | grep -v ^聚合数据/$ | xargs -i git add {}` 在 repo 的根目录下,如果您使用的是 `git-bash` 或 *nix。 (2认同)
  • 这对我有用,但是对这个 `git add -- 进行了一些修改。:!&lt;path&gt;`希望对某人有帮助 (2认同)
  • “--”是什么意思?我通常使用“git add”添加。需要“--”吗? (2认同)

小智 8

在我的 Windows 系统上,以下工作有效:

git add -- . :!"path_to_folder"
Run Code Online (Sandbox Code Playgroud)

  • 用于排除多个文件夹: `git add -- . :!"文件夹路径1" :!"文件夹路径2"` (3认同)