Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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
Github nulInCommit:commit对象体中的NUL字节_Github_Git Rewrite History_Gitlab Ce - Fatal编程技术网

Github nulInCommit:commit对象体中的NUL字节

Github nulInCommit:commit对象体中的NUL字节,github,git-rewrite-history,gitlab-ce,Github,Git Rewrite History,Gitlab Ce,我正在尝试使用以下步骤,使用命令行将我的一个项目从GitLab导出到GitHub。[通过命令行迁移项目]() 但是,在推送到远程存储库的过程中,迁移失败,错误为“numlincommit:commit对象体中的NUL字节”。这是因为其中一个提交历史对象中存在NUL字节 我确实知道我们在提交消息中确实会遇到NUL字节错误,我们可以通过rebase重写该错误,但该错误显示错误在对象体,而且我发现的特定提交是一个合并提交,因此我无法在提交历史中重新设置/重写或更改它 有人能帮助我在Git项目的提交历史

我正在尝试使用以下步骤,使用命令行将我的一个项目从GitLab导出到GitHub。[通过命令行迁移项目]()

但是,在推送到远程存储库的过程中,迁移失败,错误为“numlincommit:commit对象体中的NUL字节”。这是因为其中一个提交历史对象中存在NUL字节

我确实知道我们在提交消息中确实会遇到NUL字节错误,我们可以通过rebase重写该错误,但该错误显示错误在对象体,而且我发现的特定提交是一个合并提交,因此我无法在提交历史中重新设置/重写或更改它

有人能帮助我在Git项目的提交历史中修复这个问题吗

Checking object directories: 100% (256/256), done.
warning in commit 8affc08283444c3fe5c8a748e113bfd3545512dd: nulInCommit: NUL byte in the commit object body
Checking objects: 100% (117117/117117), done.```

GitHub通常在所有新对象上运行
fsck
,以防止推送损坏或恶意的对象。这也是大多数其他托管网站的情况。但是,如果您要导入存在问题的项目,如果您与他们联系,他们有时可以取消初始导入的限制

如果您这样做了,而他们说他们不能,您可以使用以下方法重写数据:

$ git init ../new-repo
$ git fast-export --all | (cd ../new-repo && git fast-import && git checkout)

这将重写历史记录以仅包含有效输入,并将在该点之后使标记上的任何签名无效,以及更改对象ID。您可能需要从
git fast export--all
编辑流以手动删除NUL字节;如果是这样,您可以将其重定向到一个文件并编辑该文件,然后将其发送到新回购中的git fast import。

推送是否成功完成?这说明这是一个警告,而不是一个错误。不,它失败了,错误远程拒绝,错误我提到了nullInCommit。我之前放置的控制台日志是从'git fsck'命令获取的,用于识别导致错误的提交```你好@bk2204。我收到无法写入blob的错误消息```git快速导入统计信息:pack_报告:getpagesize()=65536打包报告:core.packedgitWindowsSize=1073741824打包报告:core.packedGitLimit=35184372088832打包报告:打包使用的打包报告:打包映射调用=0打包报告:打包打开的打包窗口=0/0打包报告:打包映射=0/0致命:无法写入blob“555ff3548206e906f38e5f457f8a291f3ccfe46b”:参数无效。您需要指定运行的操作系统、Git版本和环境。这不是您通常应该收到的错误,因此它可能表明存在某种系统问题。OS-Windows10Git版本-Git版本2.25.1.Windows.1Environment-GitBash(Java-JDK-1.8.0¡)我在Linux机器上试过,现在可以正常工作了。非常感谢@bk2204。还有一件事。导入之后,我确实看到了所有的分支,但是,我无法直接将它们全部推送到新的存储库。我尝试了以下方法,但只尝试了mastergit push--所有源代码-u git push-origin':'``我确实有大约800个分支,并且repo大小以GBs为单位。那么,对于如何将所有快速导入的分支推送到新存储库上的远程存储库,您有什么建议吗?如果您遇到推送问题,那应该是另一个问题。有太多可能出错的事情需要在评论中适当回答。