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

2024年8月5日技巧分享评论24,350字数 853阅读2分50秒阅读模式

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

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

在 Git 中如何撤销掉之前的某一次提交 技巧分享

在 Git 中如何撤销掉之前的某一次提交

今天同事提交了一次修改,我拉取了他的修改继续做了很多工作,并提交了多次。 在准备远程的时候,我审查了下他的代码,发现有严重的问题,那么如果我只想撤回他的那次提交,而保留我之后的提交,该怎么做呢? 可以...
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定