Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git Add-致命:添加文件失败_Git - Fatal编程技术网

Git Add-致命:添加文件失败

Git Add-致命:添加文件失败,git,Git,我的git-cmd.exe窗口如下所示: git add "NextFolder/*" error: unable to create temporary file: No such file or directory error: NextFolder/SomeFile.txt: failed to insert into database error: unable to index file 'NextFolder/SomeFile.txt' fatal: adding files fai

我的git-cmd.exe窗口如下所示:

git add "NextFolder/*"
error: unable to create temporary file: No such file or directory
error: NextFolder/SomeFile.txt: failed to insert into database
error: unable to index file 'NextFolder/SomeFile.txt'
fatal: adding files failed
我正在向一个新的git repo添加大量文件。我有超过14000个文件分布在根级别的大约80个文件夹中。由于数量有限,我决定一次添加并提交一个文件夹。似乎每个文件夹都有一些文件导致“git add”操作出现致命错误(见上文)

我正在使用Git for Windows,便携版:

git --version
git version 2.22.0.windows.1
我相信这个错误与文件的内容有关。我可以重命名该文件,将内容复制到新文件,重命名该文件,所有这些都不能使其工作。我发现,如果我在文件的最底部添加一个CRLF,该文件的问题是“修复”的,但是git add操作只是挂起了文件夹中具有相同条件的其他文件

我一直在使用记事本++来检查这些文件,并将其与其他文件进行比较,这些文件似乎添加时没有任何问题。行尾看起来相同(CRLF),编码看起来相同(ANSI),等等

这个帖子中的一条评论似乎描述了我的确切问题,但这是关于答案的最后一条评论,没有投票,这个帖子已经有5年历史了

我也相当肯定这不是权限问题。这是我研究的第一件事,但我已经将源代码全部复制到了我的本地机器上,以便将所有内容添加到git中。所以我认为这不应该是权限问题,因为所有内容都是本地的,而且大多数文件都在添加。除非它与文件量或我使用Git portable的事实有关

几个小时来我一直在用头撞这个,快来帮忙


编辑:我应该指出,git回购协议与工作树是分开的。工作树位于网络驱动器S:\paht\to\tree\上,而repo位于不同的网络驱动器H:\git\test.git上。这被认为是暂时的,我试图描述(工作树)网络位置的变化频率。一旦我更好地了解了哪里的客户流失最多,我想我们将使用典型配置进行较小的回购,将.git文件夹放在工作树的根目录下

它应该是git add“NextFolder”:这里不需要星号/通配符,因为它将由git bash而不是git本身来解释

首先,确保使用简化的路径在CMD会话中添加这些文件:这将排除任何其他程序影响

set PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\
set GH=C:\path\to\git
set PATH=%GH%\bin;%GH%\usr\bin;%GH%\mingw64\bin;%PATH%
第二,确保首先键入:

git config core.autocrlf false
这将避免Git尝试在所有文件上转换EOL

我提到过,但是使用Git2.22,问题就解决了

每次执行并添加一个文件夹(和子文件夹),并在每次添加后完成提交

最后,使用Git2.22,进行更多跟踪


我应该指出,当我出现错误时,我将回购协议与工作树分离。
它们在不同的卷上

  • 工作树位于
    S:\path\…
    下,并且
  • .git
    文件夹位于
    H:\git\test.git
在本地存储库中执行
git add
时,请尝试检查问题是否仍然存在,该存储库克隆在本地磁盘
C:\
(至少.git文件夹不应涉及任何网络)


对于Git 2.24(2019年第4季度),trace2也将应用于

参见(2019年8月27日)作者。
(于2019年10月15日合并)

:为每个子命令发出trace2
cmd\u模式
签字人:加里玛·辛格
确认人:杰夫·霍斯特勒

为每个
commit graph
子命令发出
trace2\u cmd\u mode()
消息

trace2
进入Git时,commit-graph命令在不断变化

既然在
提交图
中有了足够的子命令,我们就可以标记其中的各种模式了。
区分读、写和验证是一个很好的开始


我也有同样的问题,似乎我的项目文件夹中有一个空目录。我删除了这个,一切都很好。可能使用了一条错误消息,告诉了我更多关于正确方向的信息。

您是否尝试
cd NextFolder
然后
git add.
?没有,但是有一些文件夹(只有十几个文件的较新文件夹)添加时没有问题。不过我明天可以试试。想知道文件的年代和它有什么关系吗?不管怎样,试着取得整个回购协议的所有权。复制和粘贴并不总是保证您拥有权限。“将.git文件夹放在工作树的根目录下。”:是的,只要它不在任何网络驱动器上:git在本地运行,延迟尽可能小。VonC,感谢您的帮助,我现在才回到这一点。我将core.autocrlf设置为false,GIT_TRACE2=TRUE。不过我看不出有什么不同。跟踪还显示错误文本。在跟踪的末尾,它有
code:128
。这是另一个诊断步骤吗?下一步是什么?@scottmwyant您在CMD会话中使用简化的路径完成所有这些吗?您是否可以尝试使用
git添加“NextFolder”
而不是
git添加“NextFolder/*”
?不需要星号。是的,我唯一不确定的是更改提交图的配置。只是不清楚你想让我在那里做什么。路径与上面的完全匹配。“只是不清楚您希望我在那里做什么”:例如,您可以尝试在一个单独的克隆回购中添加相同的文件(该文件的末尾需要额外的CRLF),以查看您是否可以复制该问题(目标是获得尽可能小的可复制案例)好的,有趣的。我先是“cd NextFolder”,然后是“git init”,然后是“git add.”,文件夹中的所有内容都添加到了索引中。以前我在这个文件夹中得到了错误。所以,我希望这不是一个很大的危险信号,我应该指出
git config core.autocrlf false