我无法克隆git树

Vic*_*tor 2 linux git

我对git有疑问,我试图克隆一棵树,但没有成功。

git clone https://github.com/cer/event-sourcing-examples/tree/d2077e21aa677a00095f90250470ff011c132ab8/java-spring
Run Code Online (Sandbox Code Playgroud)

我克隆了这个项目

git clone https://github.com/cer/event-sourcing-examples
Run Code Online (Sandbox Code Playgroud)

我试图切换到那棵树,但没有效果

您有什么建议吗?

最好的祝福

小智 7

检查以下内容是否有帮助。我在这里使用 GIT bash。

  1. 克隆存储库。

    git clone https://github.com/cer/event-sourcing-examples.git

  2. 输入该目录

    cd event-sourcing-examples/

  3. 切换分支(我假设树指的是分支)

    git checkout wip-vagrantwip-vagrant 是一个分支名称

  4. 要获取更新,您必须发出拉取命令。

    git pull

如果您直接想克隆分支,请按照上面评论(Micheal)中的说明进行操作。


Dol*_*000 6

Git无法直接克隆树。您需要克隆整个存储库,然后签出使用所需树的提交。但是,为了减少混乱,请注意,“树”和“提交”之间有区别:

  • 树是代表目录的Git对象,并包含指向Blob(文件)和其他树的链接。树不一定是存储库的根目录。
  • 提交对象包含到存储库的树的链接,以及一些其他信息,例如提交消息,日期和其他标头。

您只能签出提交。很少Git命令与树对象(直接处理git cat-file,并git ls-tree作为例外之间)。但是,GitHub URL中的对象ID确实是提交的ID,所以这不是问题。

然后,您可以做的就是在克隆存储库之后将所需的提交检入新分支:

git checkout -b test-branch d2077e21
Run Code Online (Sandbox Code Playgroud)

如果您要解决的问题只是从远程存储库中获取单个提交(或树),那么您就不走运了,因为Git的远程协议不支持该操作。如果有的话,如果您可以在所需的提交中将分支插入远程存储库,则可以直接克隆该分支,而无需任何历史记录:

git clone -b test-branch --depth 1 https://github.com/cer/event-sourcing-examples
Run Code Online (Sandbox Code Playgroud)

但是,如果您不能做到这一点,那么您仍然不走运。远程协议仅允许引用命名的引用,而不允许任意提交。