问一个多分支间同步代码的常用策略

2015-07-24 11:22:06 +08:00
 laoyur

前提
我是git渣,只会常用操作,而且只用GUI工具(SmartGit),理由是省得背命令(记性不好)、操作傻瓜、不容易误操作,自带冲突编辑界面。团队里另一个小伙伴一直跟我安利命令行,我始终无法适应。

问题描述
一个项目做到七七八八,比如游戏项目,就会被安排接一大堆的sdk,特别是Android,真特么的烦屌了,接sdk不是仅仅仍一坨文件完事,不仅要接相应的代码,有些奇葩sdk还得定制UI之类。
于是一个sdk就搞一个分支出来,到这里还算相安无事。
接下来问题来了:
1. master分支其实一直有更新,改改弄弄又是烦的一比,我都是用Cherry-Pick把多个commit给搞到其他分支。
2. 有时候master分支的某个commit中,只有部分需要被apply到sdk分支,所以还得手工修改。
3. 有时候头脑发昏,直接在某个sdk分支中修改了bug之类,需要将这次修改应用到master和其他sdk分支,此时咋办?
4. 时间一长,master新增的commit变多后,我都搞不清哪些sdk分支Cherry-Pick到哪了,哪些遗漏了哪些是重复的,log也看的稀里糊涂的。所以每次从master往sdk分支拖代码时都小心翼翼谨慎又谨慎。

问题
我总觉得现在的做法有相当多的问题,请神人给一个主流、稳妥又易懂的方案,谢谢!

5119 次点击
所在节点    git
26 条回复
laoyur
2015-07-24 16:22:49 +08:00
@pluson 说得对,但上来问问还是有好处的,可以借鉴一下达人们的经验,这样学起来才能直击痛处,效率更高
karloku
2015-07-25 20:37:49 +08:00
git flow流程确实好用, 不过真的想用舒服了还是需要你团队每个人都有review别人代码的能力, 这样才能顺畅. 不然的话可能还不如让一个开发人员开发完所有东西给你pr来得顺畅.
karloku
2015-07-25 20:41:43 +08:00
@ryanking8215 hotfix用来修复线上bug, 临时发现一个紧急问题需要快速修复放上线. 这时候就没法走feature->devel->release->master这个流程了.
hotfix直接基于现有master分支开出hotfix/xxxx的新分支, 当finish的时候会同时被merge到devel和master, 并且打上一个tag
ablula
2015-12-16 15:25:44 +08:00
我也推荐 gitflow ,这里有篇文章讲的不错,中文的容易懂些: http://blog.csdn.net/sweetvvck/article/details/50245147
laoyur
2015-12-16 17:08:09 +08:00
感谢这么久还有人回复
其实现在回过头来看,我要问的不是 git-flow 能解决的……而是如何组织主帖中提到的安卓游戏纷繁复杂的项目结构。一份代码改改 UI ,改改部分代码,就变 N 个游戏,每个游戏要分 M 个渠道,全部要装在一个 git repo 中以方便维护,实在扛不住
最后,好吧, who cases ,老子已经脱坑安卓游戏了,古德拜尔,老子不玩了
tankxxl
2017-08-24 15:32:56 +08:00
是啊,我理解楼主的问题,一个项目多个变种,多个变种导致多个分支,多个分支是平等关系,那么问题来了。
1、在分支 1 写了几行代码,我现在想让所有其它分支都用上这几行代码。如何便捷的实现?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/207999

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX