相关疑难解决方法(0)

保持浅git克隆只是最新的一种方法?

我的目标是能够构建一个具有悠久历史的项目的最新版本并为之做出贡献 - 并且不使用本地存储来复制许多历史分支和历史可以追溯到十年甚至更长时间(无论如何,我总是可以在项目的中央存储库的Web UI中查找,如果我需要的话,我可能不会这样做.

我第一次尝试时似乎很幸运:

git clone --depth 40 -b master http://github.com/who/what.git/ what
Run Code Online (Sandbox Code Playgroud)

这给了我一个整洁的本地克隆'什么'只有' master'分支,并有足够的承诺来涵盖最近的两个标记版本.
然后我可以做' git checkout latest-release-tag并构建最新版本.yippee的!

正如我想象的那样,我需要做一个补丁.一切顺利进行:' git checkout -b my-patch-branch',进行我的更改,提交,我能够将我的补丁分支推回到github上的克隆,以便项目可以拉动它.简单!
我觉得我很幸运,因为根据我的阅读,例如,在这里,我不能在git 1.9之前做到这一点.
但安装的版本竟然是1.9,所以我侥幸成功.

现在我要做的下一个显而易见的事情是从远程获取并获取master上的最新活动(包括我的补丁的上游合并,所以我不再需要该分支).我尝试了'git fetch --dry-run upstream'并惊恐地看着它无数兆字节的下载,然后给了我一个新的标签列表,可以追溯到乳齿象时代.我很高兴我说--dry-run!

我真的希望它能master从我的克隆的HEAD中获得十几个新的提交,然后我可能会有一个深度52克隆而不是40,但这就是我想要的......在我介入之前,先从有用的近期历史开始,然后从这一点开始跟踪和增长,并能够构建,分支和推送补丁.它似乎非常接近.

有没有简单的方法让git做我想做的事情?我想做的不合理吗?

编辑:更多信息.
(1)上流实际上是靠近我提前一百次,我估计十几次被拉出空中.
(2)事实证明,我在克隆中获得的原始40次提交都是单父提交.我正在尝试获取的一堆后者是在我的克隆不包含的某个分支中与第二个父进行合并提交.因为我克隆中最早的提交不是一个共同的祖先,那些是否会导致git引入他们所有的古代历史?
有没有办法告诉它我不想要那个?

更多新信息:
(1)我之前发现我之前使用的是http协议,它实际上并没有与服务器上的git进程交互,所以它没有机会定制下载大小.
但是,当我使用git-over-ssh重试时,我仍然有一个巨大的提取.
然后
(2)手动,就像动物一样,我点击了github的'newtork'显示中显示的合并提交,找到涉及在我的浅切之前开始的分支的那些,并将他们的父-2 SHA添加到我的.git/shallow文件中,然后尝试再次在ssh上'git fetch'.这很好用,并下载了一个小包文件,可以快速转发我当地的master分支机构.我认为这正是我想要git能够自动完成的操作,但我还没有找到办法.手动,这很乏味.:)

git version-control github shallow-clone

7
推荐指数
1
解决办法
864
查看次数

标签 统计

git ×1

github ×1

shallow-clone ×1

version-control ×1