我大约一个月前克隆了一个远程git存储库.远程存储库经历了许多变化,现在变得不稳定.现在我需要另一个存储库副本,版本与我一个月前克隆的版本相同.
我该怎么做呢?
是否可以在存储库中浅层克隆特定提交,即深度为1?就像是
git clone http://myrepo.git 728a4d --depth 1
Run Code Online (Sandbox Code Playgroud)
获取存储库状态,因为它是在SHA提交时728a4d...?
我们的动机是避免必须克隆整个存储库,然后检查特定的提交,当我们只对该特定提交的存储库状态感兴趣时.
我正在尝试从一个远程存储库获取一个目录,但我只想从特定的哈希中获取该文件。如果我使用带有 HEAD 的 git archive 一切正常,但是当我尝试使用特定的哈希时:
git archive -v --format tar --remote=ssh://....myrepo.git agitash afile > output.tgz
但我越来越
fatal: sent error to the client: git upload-archive: archiver died with error
remote: fatal: no such ref: 9a9c309
remote: git upload-archive: archiver died with error
Run Code Online (Sandbox Code Playgroud)
所以我读到我可以使用另一个上传存档,如下所示:
git archive -v --format tar --remote=ssh:.....myrepo.git --exec="/usr/local/bin/git upload-archive" ahash afile > output.tgz
它也不起作用。我认为是因为 BitBucket 不支持它https://confluence.atlassian.com/bitbucketserverkb/git-upload-archive-archiver-died-with-error-779171761.html
所以我想知道:还有另一种简单的方法可以做到这一点吗?
我是一个初学者,我正在尝试使用 HTTPs 克隆存储库 (sample.com/component.git),但从特定的提交 ID 克隆。
我真的不知道从哪里开始。我应该获取存储库,然后签出该提交 ID,最后克隆它吗?
git fetch sample.com/component.git
git checkout 9a36b9e79tbb9132c7020a5bd5694c7cefce8cff
git clone sample.com/component.git
Run Code Online (Sandbox Code Playgroud)
或者
git clone sample.com/component.git 9a36b9e79tbb9132c7020a5bd5694c7cefce8cff
Run Code Online (Sandbox Code Playgroud)
任何正确执行此操作的帮助,或者如果有更好的方法,将不胜感激
我发现了很多关于克隆存储库并立即检查给定提交 ID 的问题/答案。简单的方法:
git clone <URL> working-copy
cd working-copy; git checkout <COMMIT-ID>
Run Code Online (Sandbox Code Playgroud)
通过分支机构,您可以git clone -b <BRANCH> <URL>
使用分支,您还可以进行浅克隆,这使得克隆速度更快,但您无法再检出任意 ID。
所以我的问题是:有没有一种方法可以对给定的 URL/提交 ID 进行浅表克隆,而无需在远程创建分支?
不同类型的远程存储库有区别吗?(例如本地文件系统、BitBucket、GitHub、GitLab 等)