移动存储介质实现 git 远端仓库

最近看到一个关于离线使用 Git 的技巧,就是将远端仓库配置在一个移动存储介质(U 盘、移动硬盘,下面统一用 U 盘来描述)里,需要 push、pull 时把 U 盘插到电脑上,然后进行相关的操作

实现步骤

  1. 首先我们需要在本地文件夹内建立一个本地的 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"
  2. 然后把你的 U 盘插到电脑里
  3. cd 到你的 U 盘目录下,进行设置
    1
    2
    3
    4
    cd /h // 假设你的 U 盘被电脑识别为 H 盘
    mkdir myRepo.git
    cd myRepo.git
    git init --bare // 注意要加 --bare 创建一个裸库
  4. 然后回到你的本地文件夹内,进行 push
    1
    2
    3
    4
    5
    6
    cd /path/to/local/myRepo // 回到你的本地文件夹内
    git remote add origin /h/myRepo.git
    git push origin master

    // 如果有提示本地的分支没有和远程分支建立联系,可以再加上下面这句
    git push --set-upstream origin master
  5. 这时就完成了 U 盘远端仓库的配置了,如果你需要把文件 pull 到本地电脑上,只需要插入 U 盘后就可以正常 fetch、pull 了
  6. 如果你需要把文件 pull 到另一台电脑上,先将 U 盘插入指定电脑,然后执行如下指令
    1
    git clone /h/repoName.git // 这里同样假设你的 U 盘被电脑识别为 H 盘

使用场景

可以想象,这种方案可以用于一些只想本地脱离网络的多人开发场合,局域网内 gitlab 也可以做到,但是配置相对复杂一点,这个直接利用 U 盘的就非常简单

除了上述的多人开发场合,我最近也有一个用得到的场景,那就是相册备份

每次我把相机/无人机的照片/视频传到个人电脑上时,我还要传一份到 U 盘上,如果我直接整个文件夹复制,电脑肯定会提示我有重复的,询问是否覆盖,这时我们就要选择全部覆盖。同理,从 U 盘上把文件提取到电脑上时,也会经历这个过程。照片/视频非常多时,这个过程会很不优雅,这时使用上面的 U 盘 Git 方案就会很方便了,它具有以下优点

  1. 能够满足电脑、U 盘各存一份照片的需求
  2. 能够增量更新,不必自己识别新增了哪些照片,也不用全部覆盖
  3. 多台电脑之间可以实现相册同步,不会出现差异
  4. 比起直接用 github、gitee,这种离线方案没有容量限制,也更安全,传输也更快
  5. 比起在局域网内搭建 gitlab,这个方案更简单直接

参考文章


移动存储介质实现 git 远端仓库
https://enderhoshi.github.io/2024/05/11/移动存储介质实现 git 远端仓库/
作者
HoshIlIlI
发布于
2024年5月11日
许可协议