`git clone --depth=1` 之后怎样获取完整仓库?

浏览:67日期:2023-10-31

问题描述

只拿到了一个分支一个 commit, 再运行 fetch 也拿不到其他的分支和 commits 了.尝试了 git fetch --all git fetch origin 无效.用什么命令来获取完整的仓库呢?

更新:

搜到一段文章说不能继续... 不知道是不是真的:http://strk.keybit.net/blog/2011/06/07/getting-just-the-tip-of-a-remote-git-branch/

A shallow repository (one with short history) cannot be further cloned,

问题解答

回答1:

参考 @Leedy 和 @依云 的答案, 找到有个 unshallow 参数:

git fetch --help--unshallow Convert a shallow repository to a complete one, removing all the limitations imposed by shallow repositories.回答2:

(你们就在评论里解决问题了?)

$ git versiongit version 1.8.5.3$ git help clone... --depth <depth> Create a shallow clone with a history truncated to the specified number of revisions. A shallow repository has a number of limitations (you cannot clone or fetch from it, nor push from nor into it), but is adequate if you are only interested in the recent history of a large project with a long history, and would want to send in fixes as patches....

可见 git shallow clone 只能 clone 当前 remote/HEAD 的目录结构,不包括历史,因此不是完整的 repo。

However,Git 1.9/2.0 已经去除了这个限制,见 https://github.com/git/git/commit/82fba2b9d39163a0c9b7a3a2f35964cbc039e1a。

参考:http://stackoverflow.com/questions/6941889/is-git-clone-depth-1-shallow-clone-more-useful-than-it-makes-out

回答3:

$ git fetch --help

--depth=<depth>

Deepen or shorten the history of a shallow repository created by git clone with --depth= option (see git-clone(1)) to the specified number of commits from the tip of each remote branch history. Tags for the deepened commits are not fetched.

回答4:

git fetch --depth=1000000

stackoverflow上看到个解决办法,但我尝试后还是不好使。http://stackoverflow.com/questions/6802145/convert-shallow-clone-to-full-clone

回答5:

git pull --unshallow

相关文章: