这个问题的后续:如果我有一个浅克隆,如何获取所有旧的提交,使它成为一个完整的克隆?
编辑:git fetch -unshallow现在是一个选项(感谢杰克·奥康纳)。
你可以运行git fetch——depth=2147483647
来自《shallow》的文档:
特殊深度2147483647(或0x7fffffff, 32位有符号整数可以包含的最大正数)表示无限深度。
下面的命令(git版本1.8.3)将把浅克隆转换为常规克隆
git fetch --unshallow
然后,访问所有分支的起源(感谢@Peter在评论中)
git config remote.origin.fetch "+refs/heads/*:refs/remotes/origin/*"
git fetch origin
我只需要将一个回购深化到一个特定的提交。
在阅读man git-fetch之后,我发现不能指定提交,但可以指定日期:
git fetch --shallow-since=15/11/2012
对于那些需要进一步深化的人,另一个人引用道:
——深化= <深度> 类似于——depth,只不过它指定了 从当前浅边界提交,而不是从尖端提交 每个远程分支历史的。
以上这些信息都没有起到作用。我试图从一个浅克隆开始与git标签工作。
首先我尝试了
git fetch --update-shallow
这种方法在中途起了作用。 然而,没有标签可用!
git fetch --depth=1000000
最后一个命令真的获取了标签,我终于可以执行了
git checkout -b master-v1.1.0 tags/v1.1.0
然后就完事了。
HTH
实现浅克隆到深克隆的两种方法。:
使用以下步骤下载分支:(下载分支的浅拷贝,然后将其转换为完整的克隆,即带来完整的分支及其历史)。 a. git clone -b branch http://git.repository/customSP01.git——深度1
这是一个浅克隆(使用depth-选项),只获取一个分支(在您所请求的深度)。
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
To(用*替换master):
fetch = +refs/heads/*:refs/remotes/origin/* ]
g. git fetch -v
这将浅克隆转换为深克隆与所有的历史和分支细节。
你可以避免f和g步骤,如果你使用下面的命令代替步骤a中的命令来做浅克隆: git clone -b branch——no-single-branch http://git.repository/customSP01.git——深度1
推荐文章
- fork(), vfork(), exec()和clone()的区别
- 当git说它正在“解析delta”时,它实际上在做什么?
- Git命令将一个文件夹移动到另一个文件夹
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '