场景:
有时候会遇到不同git仓库但要相互同步代码,而我们只需要导出修改后的代码,我们不可能一个个文件的拷贝出来吧,而且文件夹的目录结构手动处理不管是容错、还是工作量都是不小的开支。因此我们利用
git archive指令来导出有差异的代码
两个已提交版本的代码差异导出
- 列出两个版本commit(可以使用git log、也可以使用IDEA的
VersionControl右键Copy Reversion Number) - 执行命令(win版)
git archive --format=zip HEAD $(git diff --name-only b083cb774d2a19d58ff043bbdea904316e9c84c5 6cc9baeb488f3d6e1f254ef092703351057f3250) > diff.zip
- 执行命令(linux版)
git archive --format=zip HEAD `git diff --name-only b083cb774d2a19d58ff043bbdea904316e9c84c5 6cc9baeb488f3d6e1f254ef092703351057f3250` > diff.zip
b083cb774d2a19d58ff043bbdea904316e9c84c5 表示老版commit
6cc9baeb488f3d6e1f254ef092703351057f3250 表示新版commit
- 注意点:
- 存在文件删除的,无法同步(未验证)
- 必须在git仓库的根目录执行
- 打包后的zip解压,直接粘贴到老版commit的基准代码就能实现代码合并了。
不同git仓库的代码持续同步方案
假设现在的场景,gitA仓库的代码,被发送给了B,并建立了新的仓库gitB。B要在此基础开发。同时又需要接受gitA仓库代码的bug修复。
- gitA与gitB确认代码基线
- gitB仓库建立专属gitA的分支
- gitB仓库建立B分支在此基础做开发任务
- 当gitA发布代码补丁,通过上述导出命令,生成zip后将代码同步到gitB仓库的gitA分支,最后合并gitA分支到B分支。
- 以上流程便实现既能开发又能维护补丁。当然fork也有这个功能,但这种情况考虑的是两个git仓库是私仓或不愿透露仓库信息的情况。
本文介绍了如何利用git导出不同版本之间的代码差异,并提供了在不同git仓库间持续同步代码的方案。通过执行特定命令,可以便捷地获取版本间的修改,避免手动操作的繁琐。此外,还阐述了一种确保代码同步且能独立开发的流程。
602

被折叠的 条评论
为什么被折叠?



