Git使用U盘作为远程仓库
最初只是想用U盘作为远程仓库,解决现存托管平台的若干问题。但是,随着近两天的考虑,逐步实现了本地U盘
仓库及时同步+联网同步(可选择仓库,用来发布软件)的功能,这种做法的优点是:
- 所有仓库在本地
U盘
, 可以解决网络托管平台访问速度慢、容量有限、费用高、隐私保护等问题。 - 对于不能联网的电脑,可以使用
U盘
仓库随时随地编辑代码,离线同步。 - 对于开源代码,可以设置网络,一条命令实现本地+U盘+网络托管平台同步功能,及时发布最新软件。
- 配置文件:
网络托管平台
githab
、gitlab
和gitee
等已经配置了ssh
或公开的仓库。~/.ugitrcf 1
2
3
4example:
gitee https://github.com/project.git
gitee git@gitee_fengzhenhua:fengzhenhua
gitlab git@gitlab_fengzhenhua:fengzhenhua
配置文件设置后,脚本自动启用网络同步功能。~/.ugitrcf
前2行格式范例,不起作用,,您的有效配置应当。
ugit 项目
安装脚本
安装版本
Install ugit.sh 1
2sudo curl -o /usr/local/bin/ugit https://gitlab.com/fengzhenhua/script/-/raw/usbmain/ugit.sh\?inline\=false
sudo chmod +x /usr/local/bin/ugit注意:单U盘版是第一代试验性的方案,目前已经实现多U盘版,且功能更加实用,所以单U盘版不再维护。其存在的问题主要是根据U盘名称识别U盘仓库,如果用户修改了U盘名称或使用了同名的其他U盘,则会出现问题,所以不建议大家使用单U盘版。
安装版本
Install neougit.sh 1
2sudo curl -o /usr/local/bin/ugit https://gitlab.com/fengzhenhua/script/-/raw/usbmain/neogit.sh\?inline\=false
sudo chmod +x /usr/local/bin/ugit
选项及功能
各项操作前,先将U盘
插入到Linux电脑的USB接口,
如果没有U盘
连接电脑则会出现提示。
命令 | 功能 | 备注 |
---|---|---|
ugit -a |
克隆全部U盘 仓库到本地仓库 |
2024年04月17日 |
ugit -ad |
关联远程网络仓库 | 2024年04月19日,需设置~/.ugitrcf |
ugit -b |
上传全部本地仓库到U盘 仓库和网络仓库 |
2024年04月19日 |
ugit -c |
克隆U盘 中已经建立的仓库 |
2024年04月16日 |
ugit -h |
显示帮助 | 2024年04月19日 |
ugit -l |
列出U盘 仓库 |
2024年04月18日 |
ugit -ll |
列出本地仓库 | 仅适用多U盘版2024-04-22 |
ugit -lr |
列出U盘 仓库 |
仅适用多U盘版2024-04-22 |
ugit -n |
新建U盘 仓库并克隆到本地 |
2024年04月16日 |
ugit -p |
上传全部本地仓库到网络仓库 | 2024年04月18日 |
ugit -r |
删除U盘 中已经建立的仓库 |
2024年04月16日 |
ugit -s |
同步本地、U盘、网络 | 2024年04月23日 |
ugit -u |
联网升级 | 2024年04月18日 |
ugit -v |
显示版本 | 2024年04月19日 |
ugit |
自动更新本机克隆自U盘 的仓库 |
2024年04月17日 |
ugit.sh -i |
安装脚本到/usr/local/bin/ugit |
2024年04月16日 |
- 2024年04月16日,
获得使用
U盘
作为Git
仓库的方法后,为了尽快投入工作,连夜编写了自动化脚本ugit.sh
,直接使用curl
命令安装可以保证始终使用的是最新版。 - 2024年04月19日,
ugit.sh
目前仅支持Linux
系统,欢迎您移植到Windows
平台。 - 2024年04月22日,
neougit.sh
发布,版本号V3.1
, 支持多U盘
。 - 2024年04月22日, 修复关联远程仓库bug,
升级版本号
V3.3
- 2024年04月23日,
增加
-s
同步选项,升级版本号V3.5
, 对于U盘
中已经删除的仓库,但是另一台电脑上尚没有删除的,此选项将其移除到回收站
技术细节
插入电脑
U盘
, 假设您的U盘
名字为159xxxxxxxx
, 您的Linux
用户名为wheel
, 则在ArchLinux
下U盘
的地址为1
/run/media/wheel/159xxxxxxxx
在
U盘
创建空仓库test
, 实际就是建立一个文件夹作为git
的远程仓库1
2
3
4cd /run/media/wheel/159xxxxxxxx
mkdir test
cd test
git init --bare注意:选项
--bare
必须有, 如果git仓库创建成功,则提示消息为1
Initialized empty Git repository in /run/media/wheel/150xxxxxxxx/test/
,初始化本地仓库
1
2cd ~/test-your
git init建立远程仓库连接,编辑本地
git
配置文件,写入如下内容,关联仓库及其分支~/test-your/.git/config 1
2
3
4
5
6
7
8
9
10
11[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "usb"]
url = /run/media/wheel/159xxxxxxxx/test/
fetch = +refs/heads/*:refs/remotes/usb/*
[branch "master"]
remote = usb
merge = refs/heads/master注意:文件
~/test-your/.git/config
, 中的usb
是您对远程仓库的别名,可以任意取定。创建
README.md
文件,同第一次推送文件,注意中。1
2
3
4
5git pull
touch README.md
git add .
git commit -m "first push"
git push拉取文件, 注意中。
1
git pull
在新电脑上克隆项目
1
git clone /run/media/wheel/159xxxxxxxx/test
注意:对于
clone
下来的项目,push
和pull
和普通的git
操作没有区别。如果不像上面这样编辑默认的默认的仓库及分支,则网络上的教程在U盘上建立git仓库,移动的“私有云”完成的配置的话应当使用命令pull usb master
拉取,使用push usb master
推送,其显然不如此处的配置便捷。
实现此脚本的最初说明
常用的代码托管平台有:github
、gitlab
和gitee
.
github
访问不是很稳定,同时只有付费版的才可以建立私有仓库,否则就是开放的。gitlab
支持私有仓库的建立,但是注册gitlab
需要google
接收验证码,这在国内不容易做到,再者仓库容量5G
,
有些不够用.
gitee
是国内的,优点是速度快,缺点容量也是5G
,还有一些其他因素导致也不适合存放隐私文件。上述这些都是自己准备一个U盘
建立自己的远程
仓库的理由,优点无非是容量大,成本低,速度快,但也不是没有缺点,如果使用的U盘
质量不过关那就面临资料损失的风险,所以.