这里只推荐使用类似线上 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