标题可能听起来像重复但我无法找到我的特定问题的答案.
我想在我的本地机器上克隆一个git存储库.但是,当我尝试使用shell执行此操作时,我收到错误.大多数文件正在检出但由于某种原因,其中一个图像文件导致了问题,我收到错误"致命:无法检查工作树"和"警告:克隆成功,但结帐失败".所以我现在做的是从github下载repo文件作为zip文件并将它们解压缩到我的本地目录中.所以现在我的本地目录中有所有文件,但是本地目录没有连接到github上的repo.是否有一个命令可以实现这一目标?
这个问题似乎不完整.git clone
在这种情况下的输出应如下所示:
<some errors specific to your situation here> ... 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'
首先,特定错误(在上面的消息中fatal: ...
)应该有助于理解发生了什么以及如何解决它.
其次,您可以按照说明操作,git status
查看已检出的内容,然后尝试git checkout -f HEAD
修复它.
warning: Clone succeeded, but checkout failed.
我看到的一些原因:
存储库包含符号链接,您要签出的文件系统不支持符号链接.使用GitHub仓库的拉链,查看下面可能有用的替代方案.
存储库包含一些深层目录层次结构,这样在当前目录级别进行检出将导致路径太长,导致本地文件系统不支持.尝试git clone
访问您可以访问的最短路径.例如文件系统根目录.克隆成功后,您可以尝试将其移动到其他位置.如果这不起作用,那么下面的技术也不会起作用,甚至不需要尝试.
其他?最好包括在问题中.下面的技术可能会或可能不会起作用,我不知道确切原因.
失败的结果git clone
应该是至少部分完整的工作树.由于存储库来自GitHub,您可以下载内容的zip,您可以在失败的克隆之上解压缩.结果应该是一个内容匹配的工作树master
,你也将拥有Git历史记录,如"Clone succeeded"消息所暗示的那样.git status
可能会报告一些更改,可能是由于常规文件替换了符号链接或不同的文件系统权限,但似乎这是您希望通过问题达到的状态.
作为获取存储库历史记录的另一种替代方法,您可以将下载的zip初始化为新的Git存储库,添加远程存储库,获取并重置它:
unzip project.zip cd project git init git remote add origin url_on_github git fetch origin git reset origin/master git status
这git fetch
一步将获得历史.如果您在下载zip后没有对master进行新的提交,那么工作树的内容应该与最新的提交相同origin/master
.在git reset origin/master
将工作树和它对应的历史点之间的关联.
理想情况下git status
会告诉您工作树没有变化.可能并非总是如此,这取决于失败的原因git clone
.您可以尝试修复git checkout -f HEAD
,但可能会因同样的错误而失败.