我在新计算机上执行了git clone repository
。但是,当我这样做时,会发生以下情况:
Cloning into 'repository'...
remote: Counting objects: 12934, done.
remote: Compressing objects: 100% (9861/9861), done.
remote: Total 12934 (delta 3121), reused 12153 (delta 2963)
Receiving objects: 100% (12934/12934), 642.07 MiB | 138.00 KiB/s, done.
Resolving deltas: 100% (3121/3121), done.
Checking connectivity... done.
error: unable to create file 2017/08/07/sensitivepath/-A�%88scblabla?resize=800%2C600& (Invalid or incomplete multibyte or wide character)
Checking out files: 100% (13426/13426), done.
fatal: unable to checkout working tree
warning: Clone succeeded, but checkout failed.
You can inspect what was checked out with 'git status'
and retry the checkout with 'git checkout -f HEAD'
现在,有一个与此提交有关的问题,几周前,我们不得不重置为先前的提交并将所有服务器都放在该提交上运行(如果我,所有服务器都执行了git fetch origin && git reset --hard origin/master
回想一下)。问题是,特别是使用wget下载该文件,并且当尝试使用python操作它时(遗憾的是,2.7.12而不是3.4或3.5)它也崩溃了应用程序。
现在,我想我可以在失败的克隆上执行git fetch origin && git reset --hard origin/master
命令以使其正确,但我遇到了问题:
error: unable to create file 2017/08/07/sensitivepath/-A�%88scblabla?resize=800%2C600& (Invalid or incomplete multibyte or wide character)
Checking out files: 100% (13426/13426), done.
fatal: Could not reset index file to revision 'origin/master'.
git状态给了我一个糟糕的提交,这个提交在很久以前就被撤消了(在我们推送新代码的时候,我们在存储库的其他版本中执行git pull,它工作正常......)。
所以,我继续做git checkout -f HEAD
然后git pull
,这是有效的。目前,关于此问题的所有自动化都包含此命令,但这似乎不应该发生。
如何摆脱引发此错误的此文件或解决此问题的正确方法是什么?
答案 0 :(得分:1)
虽然它们都包含在一个方便的命令中,但git clone
基本上包括:
mkdir
:创建一个空目录来存放存储库; git init
:用一个新的,尚未空的存储库填写该空目录; git remote add origin <url>
:将空存储库配置为具有名为origin
; git fetch origin
:从刚刚添加的遥控器获取所有提交(以及标签和任何相关对象); git checkout <something>
。它是最后一个失败的部分,因为你建议(你的底层操作系统拒绝的文件名),其他操作系统必须接受它有问题的提交)。
这里有趣的是<something>
部分,你可以控制它。如果您选择 not 来控制它,您的Git - 创建目录的人,创建存储库等等 - 询问其他 Git,在另一端<url>
,哪个分支是默认分支。
通常,master
,但任何分支都可以是默认分支。这取决于谁控制其他 Git存储库来配置默认值。配置方式取决于管理其他Git存储库本身的方式(这里没有提到)。
但是既然你可以控制你的 Git检出的内容,你可以简单地告诉你的 Git检查一个已知良好的分支名称:
git clone -b known_good_branch <url>
现在,您不必因为git checkout
步骤失败而不得不重新克隆:此时您应该只能git checkout -b known_good_branch
git clone
在此Map<String, Object> data = new Gson().fromJson(json, type);
创建的存储库中取出然后尝试并且未能查看&#34;坏&#34;枝尖。但是,修复你正在克隆的存储库也是明智的,这样它的默认分支 - 无论是什么 - 指向&#34;好的&#34;通过更改哪个分支是默认值,或者通过添加&#34; good&#34;来提交在当前(坏)默认分支的末尾提交,或两者都提交。