OS X 系统,使用 git 一次性导入大量文件,文件列表参数由程序自动生成, n 大于 4096 :
git add -- <file1> <file2> ... <filen>
运行命令出现错误:
too many arguments (6861) -- limit is 4096
git 高手们有遇到这种情况吗,该怎么解决?
OS X 系统,使用 git 一次性导入大量文件,文件列表参数由程序自动生成, n 大于 4096 :
git add -- <file1> <file2> ... <filen>
运行命令出现错误:
too many arguments (6861) -- limit is 4096
git 高手们有遇到这种情况吗,该怎么解决?
|
1
“ git add .”你要的应该是这个....
|
|
3
=。= 6000+文件,看提示 limit is 4096 。这么多文件肯定不是手工整理的啦。分成多次或者导成 shell 呗:
git add <file1> git add <file2> ... |
|
ChiangDiApr 24, 2016 via Android
4
分两次 add 呗
|
|
SelFreeApr 24, 2016
5
还有这个 4096 应该是 shell 的限制
|
|
SelFreeApr 24, 2016
7
@SelFree 一次 commit 就是你当前 add 的内容
git add file1 git add file2 git add filen git commit 这个时候就是 commit file1 、 file2 ... filen 啊 |
|
YuJianrongApr 24, 2016 via iPhone
9
commit 不会有问题吧,不需要解决。
|
|
neoblackcapApr 24, 2016
12
若是生成文件都在一个文件夹里面的话,你 add 那个文件夹就好了
|
|
sagnitudeApr 24, 2016
13
你既然知道哪些文件不想提交,剪切出来不就行了
|
|
14
这跟 git 无关,是 shell 的限制,可以了解一下 xargs
|
|
15
|
|
16
不知道你不想提交的文件规律性怎么样,有个暴力的办法,列出你不想 commit 的文件, echo 进.gitignore 里
等 commit 后,再从.gitignore 里删除掉 |
|
bikong0411Apr 24, 2016
19
这是 shell 报的错,跟 git 无关
|
|
lizhemingApr 24, 2016
20
如果是添加的多,不想添加的只有几个,可以 git add . 之后然后 git reset file 。当然我更推荐的是使用 git add -i 进入交互模式,可以自行选择需要 add 的文件,非常方便。
|
|
21
.gitignore
|
|
xiamxApr 24, 2016
22
echo "<file1> <file2> <filen>" | xargs git add --
|
|
327beckhamApr 24, 2016
23
你既然能整理出<file1> <file2> <file3> 。。。。这么长的列表,那就再弄一个 bash 脚本,内容是:
git add <file1> git add <file2> git add <file3> ...... |
|
mengzhuoApr 24, 2016
25
shell 的问题怎么能怪 git 呢
楼主的结构有问题了吧 |
|
sunjourneyApr 24, 2016 via iPhone
26
这么多文件真的是项目文件吗?什么东西的源码会这样?编译后的东西不要同步了好吧?
|
|
ClarencepApr 24, 2016
27
如果不想提交的文件比较少,可以先 `git add .` 然后使用 `git reset HEAD 不想提交的文件` 来排除
|
|
IxiziApr 24, 2016
28
把要改的随便加点注释之类的,然后 git add -u
|
|
KirscheisApr 24, 2016 via Android
29
这是 shell 的问题,和 git 没关系。 echo " " | xargs git add -- 就好了
|
|
wizardozApr 24, 2016
30
同觉得问题不存在,不想 commit 的文件不要 add 就行了,又要 add 又不想 commit 的理由是什么?
|
|
itfanrApr 24, 2016
32
git add -A
|
|
kxxolingApr 24, 2016
33
git add . ;git rm xxx --cached?
|
|
kxxolingApr 24, 2016
34
没提交的话 git add .; git reset xxx 应该也行。话说这么多文件就不能用通配符?
|
|
xwartzApr 24, 2016
35
git add --all
|
|
marcushbsApr 24, 2016
36
function gc {
for f in `git status |grep modified|awk '{print $3}'` do git add $f done git commit -m "$1" git push } |
|
billleeApr 24, 2016
37
你需要 xargs
|
|
hzlzhApr 24, 2016
38
之前做 temp.im 这个服务的时候尝试过 push 100w 个文件到 github 上,是分批进行的, github 有做限制。
via https://www.v2ex.com/t/57477 后来换七牛 CDN 来存了 |
|
BOYPTApr 24, 2016
39
命令行长度是内核限制来的。跟 git 无关
|
|
bicoff9527Apr 24, 2016
40
奇怪的想法,大概是对 git 不熟
|
|
HakuApr 24, 2016
41
too many arguments 是指参数太多,也就是命令用错的意思....
|
|
tsl0922Apr 24, 2016
42
如果想忽略当前 index 内容只提交特定文件可以使用: git commit --only -m <msg> -- <file>...
|
|
strweiApr 24, 2016
43
git add -A
|
|
mhttApr 24, 2016 via iPhone
44
git add -A ?
|
|
cheerzengApr 24, 2016
45
如果是同类文件,以 python 文件为例,可以 git add *.py
至于 commit ,跟 add 几次没关系啊 |
|
pynixApr 24, 2016
46
分成 2 批。。。
|
|
wensonsmithApr 24, 2016
47
git add -A
|
|
starcraftApr 24, 2016 via iPhone
48
今天也碰到了添加的问题 刚好搜了研究下-A 的命令
|
|
kirisetszApr 24, 2016
49
这个是 shell 或者系统调用的限制解法嘛,把结果导入 xargs 转换一下吧 find . -print0 -type f | xargs -n1 git add -- 这样。
|
|
busyluoApr 25, 2016 via iPhone
50
|
|
chuxiwenApr 25, 2016 via iPad
51
too many arguments (6861) -- limit is 4096
这个是 shell 的限制,可以自写个 shell script 克服这个问题 http://stackoverflow.com/questions/13781216/bash-meaning-of-too-many-arguments-error-from-if-square-brackets |
|
allenforrestApr 25, 2016
52
感觉是做文件云同步,底层机制用 git 实现
|
|
darasionApr 25, 2016
53
是 shell 的限制。即便你不用 git ,删除这么多文件也是有问题的。
一般命令行参数太多了或者不能预期是多少的时候,都得用 xargs 命令展开一下。 |
|
SmiteChowApr 25, 2016
54
顶楼上,楼上说的展开就是走管道,妥妥的没问题
|