联网的模式下就不详述了,可以使用git fetch , git pull, git checkout, git commit, git push等操作同步,
本文主要说一下离线模式下,不能使用上述命令的情况下,怎么同步版本。
假设目前最新开发版本 git log记录如下:
commit 5555555555555555555
commit 4444444444444444444
commit 3333333333333333333
commit 2222222222222222222
commit 1111111111111111111
另一台离线的机器上是几天前同步的版本,git log记录是:
commit 2222222222222222222
commit 1111111111111111111
我们用人眼分析,是缺了三次最近提交,怎么办呢?
切换在线机器上最新的分支下,输入命令:
git format-patch 22222222222222222222
表示从哪个版本开始(也就是离线机器上的版本), 到当前最新版本的增量更新文件,
然后会生成一些以.patch结尾的文件,这些就是从版本3333333333333333333333到555555555555555555之间的改动记录和文件,
将这些.patch文件离线copy到另一台机器上,执行:
git am *.patch
正常情况下,就会把近期更新合并到本地,即与主分支的55555555555555555内容都一样了。
但有个问题,就是两个机器的文件、git log记录确实是一样的,但SHA值不一样了,就不好比较版本了,怎么解决?