Git 代码管理问题

2019-05-28 13:32:44 +08:00
 avalon8

小弟公司这两天打算从 SVN 转到 GIT 让我想一个解决办法但是经理非要让我解决一个问题:

1、因为经常开发过程中有的功能可能临近开发完成或者测试完成才决定上不上线所以最开始分支可能打的没有那么细,比如说一个需求先开发了 A 功能然后在 A 功能的基础上开发了 B 功能,并且这两个功能在一个分支上。

2、上线的时候决定上 B 功能而不上 A 功能。

3、所以经理想着是合并代码的时候只合并 B 功能的代码而不要 A 功能的代码

请问 GIT 版本管理有什么好的办法能够做到合并每个版本的增量提交,cherry-pick 试了不行。 小弟万分感谢。

1805 次点击
所在节点    问与答
21 条回复
SoloCompany
2019-05-28 14:07:19 +08:00
git 不是万能的,vcs 代替不了模块设计划分,该有 coflict 还是会有 conflict

如果不希望 conflict,应该让功能 b 使用独立分支,发布决定集成才合并
imdong
2019-05-28 14:12:54 +08:00
每次加新功能 顺手建一个分支
习惯了就好,养不成习惯,谁也没辙。
avalon8
2019-05-28 14:14:40 +08:00
@SoloCompany 确实是这样
avalon8
2019-05-28 14:14:56 +08:00
@imdong 哈哈我也这么提过
Vegetable
2019-05-28 14:19:24 +08:00
这个应该叫插件式开发吧
jybox
2019-05-28 14:37:42 +08:00
新建一个分支 cherry-pick B 功能的 commit (为什么「 cherry-pick 试了不行」?)

如果两个功能的代码有重叠那估计没有工具解决得了了。
wutiantong
2019-05-28 14:45:57 +08:00
git rebase?
acehow
2019-05-28 14:46:57 +08:00
gitflow 学一下
momocraft
2019-05-28 14:48:30 +08:00
人都做不到的不要指望 git 了
passerbytiny
2019-05-28 14:58:40 +08:00
你的第一句话我实在是看不懂。

你描述的问题我也很怀疑是否存在,在 A 功能的基础上开发了 B 功能,最后只上线 B 功能而不上线 A 功能,这相当于建一个没有底层的高楼。

解决方案是有的,与 git 无关,你再添加些 C 代码,在保留 B 功能的同时,把 A 功能隐藏掉,相当于造一个底层不开放的高楼。
wobushizhangsan
2019-05-28 15:03:16 +08:00
哈哈。项目上的事情让 git 背锅。做不好需求和版本的管理,这个问题无解。
baojiweicn2
2019-05-28 15:10:37 +08:00
同问,为啥 cherry pick 不行
avalon8
2019-05-28 15:49:13 +08:00
@jybox 就是这两个共能在一个分支上然后想只要后面开发功能的代码, 用 cherry-pick 会提示冲突,还是要手动合并
avalon8
2019-05-28 15:50:20 +08:00
@wobushizhangsan 并不是让 git 背锅只是领导都比较保守,从 svn 迁移到 git 要满足领导的需求才有可能施行
avalon8
2019-05-28 15:52:24 +08:00
@passerbytiny 这些功能可能并非关联很大或者连续的功能,只是想满足领导的需求才能有机会从 svn 迁移到 git 上,领导思想偏保守
avalon8
2019-05-28 15:52:40 +08:00
@acehow 好的我去看一下 感谢提示
avalon8
2019-05-28 15:53:41 +08:00
@baojiweicn2 想要的是合并某一次的增量提交,只要后一个版本的增量提交而不要前面某个版本的代码
pkookp8
2019-05-28 16:11:11 +08:00
功能 ab 独立开发,不然没辙,或者 merge b 分支的时候手动删除 a 的相关提交
avalon8
2019-05-28 16:26:44 +08:00
@pkookp8 嗯只能这样了
msg7086
2019-05-29 06:34:53 +08:00
B 如果依赖 A 的话,没了 A,B 当然需要手动处理更改,不管是用 SVN 还是 Git 还是现在还没发明出来的下一代版本管理工具,都需要手动解决的。

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

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

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

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

© 2021 V2EX