将本地目录与现有git存储库同步

 曾雅芬珍念孟璇 发布于 2023-02-12 15:33

标题可能听起来像重复但我无法找到我的特定问题的答案.

我想在我的本地机器上克隆一个git存储库.但是,当我尝试使用shell执行此操作时,我收到错误.大多数文件正在检出但由于某种原因,其中一个图像文件导致了问题,我收到错误"致命:无法检查工作树"和"警告:克隆成功,但结帐失败".所以我现在做的是从github下载repo文件作为zip文件并将它们解压缩到我的本地目录中.所以现在我的本地目录中有所有文件,但是本地目录没有连接到github上的repo.是否有一个命令可以实现这一目标?

1 个回答
  • 这个问题似乎不完整.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,但可能会因同样的错误而失败.

    2023-02-12 15:35 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有