没有线上 Git 仓库,如何实现本地设备间 Git 仓库数据管理的方法

98 阅读2分钟

这里只推荐使用类似线上 Git 仓库相关的方法。

当然你也可以直接使用 usb 或者微信传压缩包来实现,只是这样我觉得会丢失了 Git 的优势,所以不在这里说明。

背景

最近由于一个项目是我一个人在开发的,公司线上仓库收费的,需要单独找管理者来创建,创建比较麻烦,所以也就没有把代码传到线上仓库。

但是因为需要编译打包整个项目为执行文件,而我使用 MAC 开发的,如果想给 Windows 使用,就必须要在 Windows 上进行打包编译。

但是,如果我复制整个目录到 Windows 上,就会显得有点呆(毕竟有很多缓存及虚拟环境的内容),所以我就想在 Windows 上直接来拉取我整个项目,实现两个设备的同步。

实现

使用 Git Bundle

Git 是可以创建仓库快照的,这样在另外一台设备直接导入,就和在线上拉取是一样的。

可以使用 Git bundle 来创建一个完整的 Git 仓库快照,并在另一台设备上进行导入。

在设备 A 上:

 # 创建一个 Git bundle 文件
 Git bundle create repo.bundle --all

repo.bundle 文件拷贝到设备 B 上(可以使用 USB、局域网等方式)

在设备 B 上:

 # 创建一个新的本地仓库
 mkdir new_repo
 cd new_repo
 Git init
 ​
 # 从 bundle 文件中恢复仓库
 Git fetch ../path/to/repo.bundle master

如果你需要恢复所有分支,可以使用以下命令:

 git fetch ../path/to/repo.bundle refs/heads/*:refs/heads/*

这将恢复所有分支到本地。

使用 Git 服务器

如果两台设备 A 和 B 在同一局域网内,我们也可以在设备 A 上设置一个简单的 Git 服务器,并在设备 B 上进行克隆或拉取。

在设备 A 上:

 # 在设备 A 上创建裸仓库
 mkdir --bare /path/to/repo.Git
 cd /path/to/repo.Git
 Git init --bare

然后在设备 B 上克隆仓库,

在设备 B 上:

 Git clone user@deviceA:/path/to/repo.Git