我无法克隆git树

时间:2017-04-14 12:53:58

标签: linux git

我有一个关于git的问题,我试图克隆一棵树但没有成功。

git clone https://github.com/cer/event-sourcing-examples/tree/d2077e21aa677a00095f90250470ff011c132ab8/java-spring

我克隆了项目

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

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

你有什么建议吗?

祝你好运

5 个答案:

答案 0 :(得分:3)

Git无法直接克隆树。您需要克隆整个存储库,然后检查使用所需树的提交。但是,为了减少混淆,请注意术语"树"之间存在差异。并且"提交",但是:

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

您只能查看提交。很少有Git命令直接处理树对象(ACTION_ONE: type('Action one')git cat-file属于例外)。但是,GitHub URL中的对象ID确实是提交的ID,因此这不是问题。

然后,您可以在克隆存储库后检查您想要的提交到新分支:

git ls-tree

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

git checkout -b test-branch d2077e21

但是,如果你不能这样做,那么你仍然没有运气。远程协议只允许引用命名引用,而不是任意提交。

答案 1 :(得分:0)

git clone -b <branch> <remote_repo>

示例:

git clone -b my-branch git@github.com:user/myproject.git

替代方案(无需公钥设置):

git clone -b my-branch https://git@github.com/username/myproject.git

答案 2 :(得分:0)

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

  1. 克隆存储库。

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

  2. 输入该目录

    cd event-sourcing-examples/

  3. 切换分支(我假设是树,你的意思是分支)

    git checkout wip-vagrant wip-vagrant是分支名称

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

    git pull

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

答案 3 :(得分:0)

首先,您需要获取完整的存储库并将签出的存储库签出到commit_sha。

git clone -n <repo_name> 
git checkout <commit_sha>

答案 4 :(得分:0)

如果您的目标只是在特定的提交时获得回购的副本...

虽然您不能使用克隆,但可以在特定提交时下载回购的zip文件

此方法在GitHub上有效。

此方法和其他方法可以在以下位置找到: https://coderwall.com/p/xyuoza/git-cloning-specific-commits

TL; DR

导航到所需阴影的树形视图。

mvn verify

下载zip文件。 不要克隆。

https://github.com/<repo_name>/tree/<commit_sha>