我正在尝试将所有文件添加到我的git索引中,使用
git add -A
但是,有一个目录包含导致此错误的非常大的文件:
fatal: confused by unstable object source data for 9f8c02a8d2a04d7fffed08b299a0cb8996ab7ecb
因此,添加过程中断!我如何告诉git我想在添加其他内容的同时排除这个目录?可用的在线解决方案首先添加所有内容,然后删除一些文件。显然,我不能这样做,因为git在添加特定目录中的文件时会崩溃。
4ioopgfo1#
如果你的Git版本足够新,
git add -- . ':!<path>'
.表示当前目录下的全部,':!<path>'表示排除路径。所以这意味着除了path之外的所有都要加起来。. ':!<path>'的术语是pathspec。然而,文档有点晦涩,缺乏丰富的例子。我发现this post对理解pathspec很有帮助。
.
':!<path>'
path
. ':!<path>'
pathspec
4si2a6ki2#
在我的Windows系统上,以下工作:
git add -- . :!"path_to_folder"
5lhxktic3#
@ElpieKay的回答对我不起作用,但这一个做到了:
git add -- . :!<path>
fv2wmkja4#
@Alec你应该在:!<path>上加上(')单引号这
:!<path>
到这个
例如
> git add -- . ':!somefolder'
c2e8gylq5#
作为一个额外的奖励,不要忘记你可以使用glob模式来进一步细化被排除的内容:
git add . -- ':!somefolder' ':!**/some_deep_nested_folder/*'
正如pathspec git词汇表中提到的
gywdnpxw6#
另一种更灵活的方法是添加所有文件,然后根据您的愿望尝试逐个排除。例如,在我的Laravel项目中,我想在public文件夹中删除dist和plugins文件夹
public
dist
plugins
1)git add . 2) git reset -- public/dist 3)git reset -- public/plugins
因此,当我写git status时,下图显示了代码的结果:
git status
6条答案
按热度按时间4ioopgfo1#
如果你的Git版本足够新,
.
表示当前目录下的全部,':!<path>'
表示排除路径。所以这意味着除了path
之外的所有都要加起来。. ':!<path>'
的术语是pathspec。然而,文档有点晦涩,缺乏丰富的例子。我发现this post对理解pathspec
很有帮助。4si2a6ki2#
在我的Windows系统上,以下工作:
5lhxktic3#
@ElpieKay的回答对我不起作用,但这一个做到了:
fv2wmkja4#
@Alec你应该在
:!<path>
上加上(')单引号这
到这个
例如
c2e8gylq5#
作为一个额外的奖励,不要忘记你可以使用glob模式来进一步细化被排除的内容:
正如pathspec git词汇表中提到的
gywdnpxw6#
另一种更灵活的方法是添加所有文件,然后根据您的愿望尝试逐个排除。例如,在我的Laravel项目中,我想在
public
文件夹中删除dist
和plugins
文件夹因此,当我写
git status
时,下图显示了代码的结果: