我有一个关于git的问题,我试图克隆一棵树但没有成功。
git clone https://github.com/cer/event-sourcing-examples/tree/d2077e21aa677a00095f90250470ff011c132ab8/java-spring
我克隆了项目
git clone https://github.com/cer/event-sourcing-examples
我尝试切换到那棵树但没有效果
你有什么建议吗?
祝你好运
答案 0 :(得分:3)
Git无法直接克隆树。您需要克隆整个存储库,然后检查使用所需树的提交。但是,为了减少混淆,请注意术语"树"之间存在差异。并且"提交",但是:
您只能查看提交。很少有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。
克隆存储库。
git clone https://github.com/cer/event-sourcing-examples.git
输入该目录
cd event-sourcing-examples/
切换分支(我假设是树,你的意思是分支)
git checkout wip-vagrant
wip-vagrant是分支名称
要获得更新,您必须发出拉取命令。
git pull
如果您想直接克隆分支,请按照上述评论(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>