如何将Git浅克隆转换为完全克隆?

6mw9ycah  于 2023-01-07  发布在  Git
关注(0)|答案(6)|浏览(225)

this所提问题的随访:如果我有一个浅克隆,如何提取所有较旧的提交,使其成为一个完整的克隆?

ttygqcqt

ttygqcqt1#

下面的命令 (git version 1.8.3) 会将浅克隆转换为常规克隆

git fetch --unshallow

然后,访问所有的分支上的起源(感谢@彼得在评论)

git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
tyky79it

tyky79it2#

    • 编辑:**git fetch --unshallow现在是一个选项(感谢杰克·奥康纳)。

您可以运行git fetch --depth=2147483647
docs on shallow
特殊深度2147483647(或0x7fffffff,有符号32位整数可以包含的最大正数)表示无限深度。

cu6pst1q

cu6pst1q3#

我只需要将回购协议深化到一个特定的承诺。
在阅读man git-fetch之后,我发现不能指定提交,但可以指定日期:

git fetch --shallow-since=15/11/2012

对于那些需要渐进式深化的人,另一条man的名言是:

--deepen=<depth>

类似于--depth,不同之处在于它指定了从当前浅边界开始的提交次数,而不是从每个远程分支历史的顶端开始的提交次数。

oyjwcjzk

oyjwcjzk4#

实现浅克隆到深克隆的两种方法:
1.已使用以下步骤下载分支:(这会下载分支的浅副本,然后将其转换为完整克隆,即带来完整的分支及其历史记录)。
a. git克隆-B分支http://git.repository/customSP01.git--深度1
这是一个浅克隆(带depth选项),只提取一个分支(在您请求的深度)。

b. cd customSP01
c. git fetch --depth=100
d. get fetch --depth=500
....
e. git fetch --unshallow

//上面的命令会将shallow clone转换为普通的shallow clone,但是这并没有把所有的分支都带过来:
然后,获得所有分支机构的访问权限。

f. git remote set-branches origin '*'

[This步骤也可以通过编辑.git/config中的以下行手动完成。
获取= +引用/头/主:引用/远程/源/主
至(用 * 替换主文件):
获取= +引用/头/:引用/远程/源/ ]

g. git fetch -v

这会将“浅克隆”转换为包含所有“历史记录”和“分支”详细信息的“深克隆”。
1.如果使用以下命令而不是步骤a.中的命令执行浅克隆,则可以避免步骤f和g:
git克隆-B分支--无单分支http://git.repository/customSP01.git--深度1

ni65a41a

ni65a41a5#

你可以试试这个:

git fetch --update-shallow
pprl5pva

pprl5pva6#

上面的消息都没有起作用,我尝试从一个浅克隆开始使用git标签。
一开始我试着

git fetch --update-shallow

这是一种工作了一半的方式。然而,没有标签可用!

git fetch --depth=1000000

最后一个命令确实获取了标记,我终于可以执行

git checkout -b master-v1.1.0 tags/v1.1.0

然后了结此事。
高温加热

相关问题