小弟公司这两天打算从 SVN 转到 GIT 让我想一个解决办法但是经理非要让我解决一个问题:
1、因为经常开发过程中有的功能可能临近开发完成或者测试完成才决定上不上线所以最开始分支可能打的没有那么细,比如说一个需求先开发了 A 功能然后在 A 功能的基础上开发了 B 功能,并且这两个功能在一个分支上。
2、上线的时候决定上 B 功能而不上 A 功能。
3、所以经理想着是合并代码的时候只合并 B 功能的代码而不要 A 功能的代码
请问 GIT 版本管理有什么好的办法能够做到合并每个版本的增量提交,cherry-pick 试了不行。 小弟万分感谢。
1
SoloCompany 2019-05-28 14:07:19 +08:00 via iPhone
git 不是万能的,vcs 代替不了模块设计划分,该有 coflict 还是会有 conflict
如果不希望 conflict,应该让功能 b 使用独立分支,发布决定集成才合并 |
2
imdong 2019-05-28 14:12:54 +08:00
每次加新功能 顺手建一个分支
习惯了就好,养不成习惯,谁也没辙。 |
3
avalon8 OP @SoloCompany 确实是这样
|
5
Vegetable 2019-05-28 14:19:24 +08:00
这个应该叫插件式开发吧
|
6
jybox 2019-05-28 14:37:42 +08:00
新建一个分支 cherry-pick B 功能的 commit (为什么「 cherry-pick 试了不行」?)
如果两个功能的代码有重叠那估计没有工具解决得了了。 |
7
wutiantong 2019-05-28 14:45:57 +08:00
git rebase?
|
8
acehow 2019-05-28 14:46:57 +08:00 via Android
gitflow 学一下
|
9
momocraft 2019-05-28 14:48:30 +08:00
人都做不到的不要指望 git 了
|
10
passerbytiny 2019-05-28 14:58:40 +08:00 2
你的第一句话我实在是看不懂。
你描述的问题我也很怀疑是否存在,在 A 功能的基础上开发了 B 功能,最后只上线 B 功能而不上线 A 功能,这相当于建一个没有底层的高楼。 解决方案是有的,与 git 无关,你再添加些 C 代码,在保留 B 功能的同时,把 A 功能隐藏掉,相当于造一个底层不开放的高楼。 |
11
wobushizhangsan 2019-05-28 15:03:16 +08:00 via Android
哈哈。项目上的事情让 git 背锅。做不好需求和版本的管理,这个问题无解。
|
12
baojiweicn2 2019-05-28 15:10:37 +08:00 via Android
同问,为啥 cherry pick 不行
|
13
avalon8 OP @jybox 就是这两个共能在一个分支上然后想只要后面开发功能的代码, 用 cherry-pick 会提示冲突,还是要手动合并
|
14
avalon8 OP @wobushizhangsan 并不是让 git 背锅只是领导都比较保守,从 svn 迁移到 git 要满足领导的需求才有可能施行
|
15
avalon8 OP @passerbytiny 这些功能可能并非关联很大或者连续的功能,只是想满足领导的需求才能有机会从 svn 迁移到 git 上,领导思想偏保守
|
17
avalon8 OP @baojiweicn2 想要的是合并某一次的增量提交,只要后一个版本的增量提交而不要前面某个版本的代码
|
18
pkookp8 2019-05-28 16:11:11 +08:00 via Android
功能 ab 独立开发,不然没辙,或者 merge b 分支的时候手动删除 a 的相关提交
|
20
msg7086 2019-05-29 06:34:53 +08:00
B 如果依赖 A 的话,没了 A,B 当然需要手动处理更改,不管是用 SVN 还是 Git 还是现在还没发明出来的下一代版本管理工具,都需要手动解决的。
|