移动存储介质实现 git 远端仓库
最近看到一个关于离线使用 Git 的技巧,就是将远端仓库配置在一个移动存储介质(U 盘、移动硬盘,下面统一用 U 盘来描述)里,需要 push、pull 时把 U 盘插到电脑上,然后进行相关的操作
实现步骤
- 首先我们需要在本地文件夹内建立一个本地的 git 仓库
1
2
3
4
5
6
7// 创建一个文件夹,最好记住这个文件夹名,后面创建远端仓库时也用这个,后面 clone 就比较统一了
mkdir myRepo
cd myRepo
git init
touch test.txt // 创建一个用于测试的 txt
git add .
git commit -m "Initial Commit" - 然后把你的 U 盘插到电脑里
- cd 到你的 U 盘目录下,进行设置
1
2
3
4cd /h // 假设你的 U 盘被电脑识别为 H 盘
mkdir myRepo.git
cd myRepo.git
git init --bare // 注意要加 --bare 创建一个裸库 - 然后回到你的本地文件夹内,进行 push
1
2
3
4
5
6cd /path/to/local/myRepo // 回到你的本地文件夹内
git remote add origin /h/myRepo.git
git push origin master
// 如果有提示本地的分支没有和远程分支建立联系,可以再加上下面这句
git push --set-upstream origin master - 这时就完成了 U 盘远端仓库的配置了,如果你需要把文件 pull 到本地电脑上,只需要插入 U 盘后就可以正常 fetch、pull 了
- 如果你需要把文件 pull 到另一台电脑上,先将 U 盘插入指定电脑,然后执行如下指令
1
git clone /h/repoName.git // 这里同样假设你的 U 盘被电脑识别为 H 盘
使用场景
可以想象,这种方案可以用于一些只想本地脱离网络的多人开发场合,局域网内 gitlab 也可以做到,但是配置相对复杂一点,这个直接利用 U 盘的就非常简单
除了上述的多人开发场合,我最近也有一个用得到的场景,那就是相册备份
每次我把相机/无人机的照片/视频传到个人电脑上时,我还要传一份到 U 盘上,如果我直接整个文件夹复制,电脑肯定会提示我有重复的,询问是否覆盖,这时我们就要选择全部覆盖。同理,从 U 盘上把文件提取到电脑上时,也会经历这个过程。照片/视频非常多时,这个过程会很不优雅,这时使用上面的 U 盘 Git 方案就会很方便了,它具有以下优点
- 能够满足电脑、U 盘各存一份照片的需求
- 能够增量更新,不必自己识别新增了哪些照片,也不用全部覆盖
- 多台电脑之间可以实现相册同步,不会出现差异
- 比起直接用 github、gitee,这种离线方案没有容量限制,也更安全,传输也更快
- 比起在局域网内搭建 gitlab,这个方案更简单直接
参考文章
移动存储介质实现 git 远端仓库
https://enderhoshi.github.io/2024/05/11/移动存储介质实现 git 远端仓库/