Git 仓库拆拆拆
程序员最爽的事情是什么?删删删!所有项目本来都很苗条的,时间长了难免有一些越搞越大,怎么看怎么不爽,一个字,拆!今天就说说拆分 Git 仓库这件小事儿。
这个拆字呢,有两种写法,比如你有一个叫做 big-project
的仓库,目录如下:
big-project
├── codes-a
├── codes-b
└── codes-eiyo
有时候想把 codes-eiyo
拆出来做为一个独立仓库;有时候是想把 codes-eiyo
清理掉,只保留剩下的代码在仓库中。现在就来分别看看这两件事情怎么干:
拆分一个子目录为独立仓库
以前是用 filter-branch 来实现,这个需求太常见了,有人做了个整合的 git-subtree,再后来……subtree
集成进 Git 了。
# 这就是那个大仓库 big-project
$ git clone git@github.com:tom/big-project.git
$ cd big-project
# 把所有 `codes-eiyo` 目录下的相关提交整理为一个新的分支 eiyo
$ git subtree split -P codes-eiyo -b eiyo
# 另建一个新目录并初始化为 git 仓库
$ mkdir ../eiyo
$ cd ../eiyo
$ git init
# 拉取旧仓库的 eiyo 分支到当前的 master 分支
$ git pull ../big-project eiyo
清除一个子目录下所有内容和记录
这个还是要用万能的 filter-branch
:
bash
# 还是那个大仓库 big-project $ git clone git@github.com:tom/big-project.git $ cd big-project # 清理 `master` 分支上所有跟 `codes-eiyo` 目录有关的痕迹 $ git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch codes-eiyo" --prune-empty master # 另建一个新目录并初始化为 git 仓库 $ mkdir ../big-project-fresh $ cd ../big-project-fresh $ git init # 拉取 `big-project` 的 `master` 分支(到新仓库的 master 分支) $ git pull ../big-project master
Before & After
记得用 count-objects
命令比较新旧仓库的差异(爽爽爽):
bash
$ git count-objects -vH
接下来要推送给新的远端仓库什么的就随你便了~
bash
$ git remote add origin git://github.com:tom/fresh-project.git $ git push origin -u master
Coding Amio
哎哟……
The way we code the web will determine the way we live online. So we need to bake our values into...
1.3k 声望
61 粉丝
推荐阅读
无服务器架构(Serverless Architectures)(上)
无服务器架构(Serverless architectures)是指一个应用大量依赖第三方服务(后端即服务,Backend as a Service,简称“BaaS”),或者把代码交由托管的、短生命周期的容器中执行(函数即服务,Function as a Servi...
Amio赞 7阅读 4.9k
Git操作不规范,战友提刀来相见!
年终奖都没了,还要扣我绩效,门都没有,哈哈。这波骚Git操作我也是第一次用,担心闪了腰,所以不仅做了备份,也做了笔记,分享给大家。问题描述小A和我在同时开发一个功能模块,他在优化之前的代码逻辑,我在开...
王中阳Go赞 5阅读 2.3k评论 2
Git 入门与实践
Git 入门与实践推荐:猴子都能懂的 GIT 入门Git --everything-is-loca 官方文档Git 教程-廖雪峰Git 的使用方式有很多。图形化 —— 小乌龟(Tortoise Git )、命令行—— git bash、IDE 集成等 ......目录1. 基础配置...
RainBow赞 1阅读 2.2k
openKylin 0.9.5版本正式发布,加速国产操作系统自主创新进程!
2023年1月12日,中国桌面操作系统根社区openKylin(开放麒麟)正式发布openKylin 0.9.5操作系统版本。此版本充分适应5G时代需求,打通平板,PC等设备,实现多端融合,弥补了国产操作系统的短板,有效推动国产操作...
openKylin赞 6阅读 7.4k
SegmentFault 思否技术周刊 Vol.78 — Git 必看技术补给
Git 的诞生是一个非常有趣的故事。1991年 Linus 开源了 Linux 内核,无数 Linux 爱好者在世界各地为 Linux 编写代码,那么问题来了,这些代码该如何管理呢?起初 Linus 使用 BitKeeper(BitMover 公司的版本控制软...
Beverly赞 3阅读 1.5k
openSSH升级公钥失效Permission denied (publickey)解决方案
背景centos系统升级openSSH后,服务器上无法再拉取代码,报错如下:原因服务器重新安装SSH后公钥改变,需要重新安装ssh-keygen -t rsa -C "邮箱地址"生成公钥,删除gitlab原有公钥,但是git pull依然报错如下:依...
兰俊秋雨赞 2阅读 1.3k
Git 分支管理策略汇总
我大概说了一些规则,但仔细想来,好像也并没有形成一个清晰规范的流程。所以查了一些资料,总结出下面这篇文章,一共包含四种常见的分支管理策略,分享给大家。
alwaysbeta赞 3阅读 931
The way we code the web will determine the way we live online. So we need to bake our values into...
1.3k 声望
61 粉丝
宣传栏
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。