我正在尝试将现有存储库从Gitlab迁移到Github。存储库的大小为8GB。在检查时发现在" .git"内创建的包文件的大小。文件夹几乎7.5gb。如果我删除.git
文件夹,执行git init
,然后将存储库推送到Github,则所有提交历史记录和分支信息都将消失。除主分支外,还有DEV和IT分支。这就是我要做的事情:
答案 0 :(得分:1)
是的,您可以完全销毁历史记录中的dev
和it
分支。它可能不会更改存储库大小,并且它不能解决核心问题:您的存储库是膨胀的。有更好的方法可以减少存储库大小。
除非您的其他分支机构与主分支机构分道扬..,除非它们存储完全不同的大型内容并且从未合并为主分支,否则从历史记录中删除它们对于存储库大小不会产生太大影响。这是因为Git的历史都建立在彼此之上。
Git存储库的历史看起来像这样:
J - K - L T - U [dev]
/ \ /
A - B - C - H - I - M - N - O - Q - R - S - V [master]
\ / \
---------D - E - F - P X - Y [it]
分支是字面上的分支。合并分支时,即使删除分支,分支的历史记录仍然存在。新分支共享以前的所有历史记录。所以master
依赖于它之前的每个提交。 dev
和it
也是如此。销毁历史记录只会为您t
和u
节省费用,因为master
需要历史记录的所有其他内容。
相反,你需要让你的回购节食。
如果您的存储库是7.5演出,它可能充满了大型文件:视频,图像,音频,办公文档,大型压缩文件等... Git很难处理大型二进制文件,包括压缩文件,因为它不能存储差异。每次他们改变它必须存储一个全新的副本。这可能会迅速扩大存储库大小。
幸运的是有一个解决方案,git-lfs
提供了“大文件存储”。这使您可以透明地将大文件的内容存储在云中,但仍然可以在Git中跟踪它们的更改,并防止您的存储库变得臃肿。你可以将它用于你想要存储的任何新的大文件,但是那些已经存储过的文件呢?
BFG Repo-Cleaner允许您重写存储库以执行从历史记录中删除文件or change them to use git-lfs等操作。
因此,您希望使用--convert-to-git-lfs
选项运行BFG。您必须弄清楚repo中的哪些文件很大,并告诉BFG过滤它们。
答案 1 :(得分:0)
你可以这样做:
1.将master
分支及其所有提交历史记录存档。
git checkout master
git pull origin master --rebase
git checkout -b archived-master
2.创建一个没有任何历史记录的新分支,现在将作为分支
master
分支。
git checkout master
git checkout --orphan latest_master
git commit -m "master with no history"
git branch -D master
git branch -m latest_master master
3.删除DEV
和IT
分支的历史记录。
由于无法单独删除分支的提交历史记录,您可以从DEV
和IT
创建中间孤立分支,删除它们并将中间分支重命名为{{ 1}}和DEV
分别如下:
对于DEV:
IT
对于IT:
git checkout DEV
git pull origin DEV --rebase
git checkout --orphan intermediary_DEV
git commit -m "DEV with no history"
git branch -D DEV
git branch -m intermediary_DEV DEV
答案 2 :(得分:0)
每次键入git push origin master
时,您都会将主分支推送到名为origin
的远程分支。在这种情况下,你的起源是gitlab。所以,...你只需要更新这个遥控器,或者添加一个新遥控器。让我们尝试添加一个名为new-origin
的新名称。您只需要运行命令
git remote add new-origin https://github.com/user/repo.git
现在你可以打开.git / config文件,看看有两个遥控器。一个叫做origin(指向gitlab),另一个叫做new-origin(指向github)。
现在您已将两个远程代码推送到origin
,而不是将代码推送到new-origin
。这就是全部!
不要推动掌握的其他分支。