文档章节

拆分GIt项目并回收空间

wuliang
 wuliang
发布于 2016/09/22 10:43
字数 312
阅读 347
收藏 7

将代码传到Bitbucket上时,发现Bitbucket有1G空间限制。正好有一个之前项目是用Ant打包的,依赖的jar很多,一查果然超过1G限制,需要将项目的jar分拆成两个单独的项目。操作如下。

假设要将myproject项目中的子目录sub3拆成单独项目

myproject/
    .git/
    sub1/
    sub2/
    sub3/
        sub3_s1/
        sub3_s2/
myproject/
    .git/
    sub1/
    sub2/
sub3/
    .git/
    sub3_s1/
    sub3_s2/

1.查看项目空间大小

git count-objects -vH

--------------

count: 0
size: 0 bytes
in-pack: 325742
packs: 1
size-pack: 377.18 MiB
prune-packable: 0
garbage: 0
size-garbage: 0 bytes

 

2.分拆子目录(sub3)为新项目

git clone /myproject /sub3
git filter-branch --tag-name-filter cat --prune-empty --subdirectory-filter sub3 -- --all
git reset --hard
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
git reflog expire --expire=now --all
git gc --aggressive --prune=now

 

3.删除子目录并回收空间

git filter-branch --tree-filter 'rm -rf sub3' --prune-empty HEAD
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d
echo sub3/ >> .gitignore
git add .gitignore
git commit -m 'Removing sub3 from git history'
# Perform a garbage collection to remove commits with no refs
git gc --prune=all --aggressive
git push origin master --force

4.回收额外空间

java -jar bfg.jar --strip-blobs-bigger-than 10M

 

参考:

http://stackoverflow.com/questions/359424/detach-move-subdirectory-into-separate-git-repository

https://help.github.com/articles/splitting-a-subfolder-out-into-a-new-repository/

http://stackoverflow.com/questions/10067848/remove-folder-and-its-contents-from-git-githubs-history

https://confluence.atlassian.com/bitbucket/reduce-repository-size-321848262.html

 

© 著作权归作者所有

wuliang

wuliang

粉丝 4
博文 2
码字总数 814
作品 1
浦东
CTO(技术副总裁)
私信 提问
加载中

评论(2)

wuliang
wuliang 博主

引用来自“红薯”的评论

放码云吧 ~ 我们也有 1G 限制 :)
码云有再用,公司有些不同产品分别在github,码云,自建git私服都有。Bitbucket主要放归档的私有项目作为备份,新的活跃项目主要是github和码云。
红薯
红薯
放码云吧 ~ 我们也有 1G 限制 :)
给Git仓库瘦身。

利用git的时候时长因为仓库误传了大文件是的git下载更新变的比较慢,这里看看怎么给他瘦身。 项目中我上传了很多psd文件导致仓库比较大这里执行删除.psd文件 git filter-branch --force --in...

leicc
2016/12/23
265
0
SVN 在线代码托管工具

在互联网环境使用SVN服务,你必须要有一台在互联网环境内支持SVN服务的在线服务器(Online Server) 您可能习惯了在公司的内网使用SVN,但如果您经常于游走于各种不同的办公环境,比如公司、...

长平狐
2013/01/06
19.8K
4
MySQL管理之道-笔记-undo log回滚日志物理文件空间回收

undo log回滚日志物理文件空间回收 MySQL5.6之前 undo log在ibdata1文件里,ibdata1文件会越来越大,想要回收,必须全库导出,删除data目录,再重新初始化数据库,最后把全库导入,才可实现i...

aix6180
2018/07/04
0
0
GIT科普系列4:仓库/缓冲区/工作副本,傻傻分不清楚?

背景: 公司内部主要以Git作为版本管理工具,在日常工作中发现大家使用Git很不熟练,而且学习的积极性不高,似乎GIT给人以一种望而却步的感觉。究其根源(个人臆测)有几点: 一、以为GIT相较...

zssureqh
2016/09/17
0
0
javascript 垃圾回收算法了解一下

我们通常理解的 javascript 垃圾回收机制都停留在表面,"会释放不被引用变量内存",最近在读《深入浅出node.js》的书,详细了解了下 v8 垃圾回收的算法,记录了一些学习笔记。 敲黑板:v8引擎...

程序员解决师
2018/06/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

如何有效地计算JavaScript中对象的键/属性数量?

计算对象的键/属性数的最快方法是什么? 是否可以在不迭代对象的情况下执行此操作? 即不做 var count = 0;for (k in myobj) if (myobj.hasOwnProperty(k)) count++; (Firefox确实提供了一...

技术盛宴
24分钟前
3
0
百度网址安全中心拦截解除的办法分享

临近2019年底,客户的公司网站被百度网址安全中心拦截了,公司网站彻底打不开了,影响范围很大,于是通过朋友介绍找到我们SINE安全公司寻求帮忙解封,关于如何解除百度的安全拦截提示,下面就...

网站安全
36分钟前
3
0
Tomcat8源码分析-启动流程-start方法

上一篇:Tomcat8源码分析-启动流程-load方法 前面讲了启动流程中的Catalina.load,进一步调用绝大部分组建的init操作,主要完成对server.xml解析,并根据解析的结果结合设置的Rule(规则)构造...

特拉仔
44分钟前
6
0
Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍

Xamarin.FormsShell基础教程(7)Shell项目关于页面的介绍 轻拍标签栏中的About标签,进入关于页面,如图1.8和图1.9所示。它是对应用程序介绍的页面。 该页面源自Views文件夹中的AboutPage.x...

大学霸
50分钟前
3
0
一步一步理解Impala query profile(一)

很多Impala用户不知道如何阅读Impala query profile来了解一个查询背后正在执行的操作,从而在此基础上对查询进行调优以充分发挥查询的性能。因此我想写一篇简单的文章来分享我的经验,并希望...

九州暮云
52分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部