gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 13:28:30 24 4
gpt4 key购买 nike

标题可能听起来像是重复的,但我找不到我的特定问题的答案。

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

最佳答案

问题似乎不完整。在这种情况下 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 以查看 checkout 的内容,然后尝试 git checkout -f HEAD 进行修复。


警告的一些原因:克隆成功,但 checkout 失败。我见过:

  • 存储库包含符号链接(symbolic link),而您要 checkout 的文件系统不支持符号链接(symbolic link)。使用 GitHub 存储库的 zip,请参阅下面可能有帮助的替代方法。

  • 存储库包含一些较深的目录层次结构,因此在当前目录级别 check out 会导致路径太长,以至于您的本地文件系统不支持。尝试 git clone 到您有权访问的最短路径。例如文件系统根目录。克隆成功后,您可以尝试将其移动到其他地方。如果那行不通,那么下面的技术也行不通,甚至无需尝试。

  • 其他?最好包括在问题中。下面的技术可能有效也可能无效,我不知道确切的原因。


失败的 git clone 的结果应该是一个至少部分完整的工作树。由于存储库来自 GitHub,并且您可以下载内容的 zip,您可以在失败的克隆之上解压缩它。其结果应该是一个工作树,其内容与 master 匹配,并且您也将拥有 Git 历史记录,正如“克隆成功”消息所暗示的那样。 git status 可能会报告一些变化,可能是由于符号链接(symbolic link)被常规文件替换,或者不同的文件系统权限,但这似乎是您希望通过问题达到的状态。


作为获取存储库历史记录的另一种方法,您可以将下载的 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 进行修复,尽管它很可能会因同样的错误而失败。

关于git - 将本地目录与现有的 git 存储库同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20415028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com