对this如此问题的跟进:如果我有一个浅层克隆,如何获取所有旧提交以使其成为完整克隆?
答案 0 :(得分:571)
以下命令(git版本1.8.3)会将浅层克隆转换为常规克隆
git fetch --unshallow
然后,访问原点上的所有分支(感谢评论中的@Peter)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
答案 1 :(得分:53)
您可以运行git fetch --depth=1000000
(假设存储库提交的次数少于一百万次)。
答案 2 :(得分:14)
我需要深化一个只有特定提交的回购。
在阅读man git-fetch
之后,我发现一个人无法指定提交,但可以指定日期:
git fetch --shallow-since=15/11/2012
对于那些需要渐进式深化的人,另一个man
引用:
--deepen=<depth>
与--depth类似,但它指定了数量 从当前的浅边界而不是从尖端提交 每个远程分支历史记录。
答案 3 :(得分:1)
两种方法可以实现从浅克隆到深克隆。 :
使用以下步骤下载分支:(这将下载分支的浅表副本,然后将其转换为完整克隆,即带来完整的分支及其历史记录。)
a。 git clone -b分支http://git.repository/customSP01.git-深度1
这会进行一个浅克隆(使用depth-option),仅提取一个分支(以您请求的深度)。
b. cd customSP01
c. git fetch –depth=100
d. get fetch –depth=500
....
e. git fetch –unshallow
//上面的命令会将浅表副本转换为常规副本。 但是,这并不能带来所有分支:
然后,访问所有分支。
f. git remote set-branches origin '*'
[此步骤也可以通过在.git / config中编辑以下行来手动完成。
fetch = + refs / heads / master:refs / remotes / origin / master
到(用*替换主文件):
fetch = + refs / heads / *:refs / remotes / origin / * ]
g. git fetch -v
这会将具有所有“历史记录”和“分支”详细信息的“浅克隆”转换为“深克隆”。
如果使用以下内容代替步骤a中的命令,则可以避免执行步骤f和g。进行浅层克隆:
git clone -b分支--no-single-branch http://git.repository/customSP01.git --depth1
答案 4 :(得分:0)
你可以试试这个:
git fetch --update-shallow
答案 5 :(得分:0)
以上消息均无济于事。我正在尝试从浅层克隆开始使用git标签。
首先我尝试
git fetch --update-shallow
哪种方式成功了。 但是,没有可用的标签!
git fetch --depth=1000000
最后一条命令确实获取了标签,我终于可以执行
git checkout -b master-v1.1.0 tags/v1.1.0
并完成它。
HTH