sno*_*gel 18 git github heroku shallow-clone
由于大量的提交,我有一个庞大的git repo,所以根据这里的建议我创建了一个浅层克隆.我已经对这个新的本地仓库进行了更改,现在我想在Github上推动我的起源(然后再到我在Heroku上的升级和生产遥控器).也许有一天我会学习阅读文档:
git clone --depth命令选项说
--depth创建一个浅层克隆,其历史记录被截断为指定的修订数.浅存储库有许多限制(您不能克隆或获取它,也不能从中推送或插入它)
那么......我如何从这种情况中解脱出来并将我的代码推送到Github?
Ant*_*sse 14
我不同意接受的答案有两个原因:
以下是我的建议:
你应该有一个带有嫁接点的$ GIT_DIR/.git/shallow文件.如果历史很简单,即使文档另有说明,这个移植点应该允许你推动.
这允许您保持提交历史记录等:
git format-patch origin..master
Run Code Online (Sandbox Code Playgroud)
然后克隆原点并重新应用:
git clone origin_path
cp shallow_clone/*.patch deep_clone
cd deep_clone
git am *.patch
Run Code Online (Sandbox Code Playgroud)
这次你可以推!
git push
Run Code Online (Sandbox Code Playgroud)
sj2*_*j26 12
Git(从1.8.3开始)现在有一种官方方式来获取浅层克隆的完整历史记录:
git fetch --unshallow
Run Code Online (Sandbox Code Playgroud)
--unshallow如果源存储库已完成,请将浅存储库转换为完整存储库,从而消除浅存储库所施加的所有限制.
如果源存储库很浅,则尽可能多地获取,以便当前存储库与源存储库具有相同的历史记录.
如果您在浅层克隆中工作并且缺少历史记录会导致问题,则可以使用该--depth选项获取更多历史记录.
git fetch --depth=20
Run Code Online (Sandbox Code Playgroud)
其中20是要提取的提交量.如果这还不够,请增加它.
您也可以使用该--depth选项git pull.
选项 1)如果您仍然拥有原始存储库,只需在推送之前从中获取:
git fetch --unshallow
Run Code Online (Sandbox Code Playgroud)
选项 2) 当心!这只建议用于新的存储库,因为这会导致历史记录丢失,并且很容易发生冲突!
如果您已经删除了从中获取数据的存储库,则需要丢弃所有历史记录。
git filter-branch -- --all
git push
Run Code Online (Sandbox Code Playgroud)
git filter-branch:让你重写 Git 修订历史记录
--:将过滤器分支选项与修订选项分开
--all:重写所有分支和标签
| 归档时间: |
|
| 查看次数: |
14053 次 |
| 最近记录: |