公司内部项目私搭 GitLab 服务器,使用 Git 版本控制,需要 fork 和 pull request 吗?

背景

  • 假如我有一个五人的团队开发公司内部项目,我们使用自己的 gitlab 服务器。使用git 管理代码。关于开发过程git的使用,我查了一些资料:

    每个团队开发者都要fork到自己的gitlab仓库
    然后发起pull request到源仓库, 等待管理员 *code review *

我的问题

我觉得上述git的开发流程很复杂,应该属于开源项目协同工作的方式。内部项目采用上述方式有些复杂。gitlab 可以创建组,添加组成员,那么我把团队成员都添加为developer后,我想知道一下每个成员如何管理分支?如何合并分支? 如何 code review ?所以想借鉴一下,嘿嘿…

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 10

简单点,每个人一个分支,做完功能,push,在网站提交 pr,等有权限的人 merge 到 master,就完事了。

如果自己的开发分支功能做了很久,可以时不时把最新的 master merge 到自己分支。

4年前 评论
matteao (楼主) 4年前
largezhou (作者) 4年前
Epona

开个自己的分支就好了。没必要fork

4年前 评论
matteao (楼主) 4年前
鸡排饭加蛋 4年前
matteao (楼主) 4年前
Epona (作者) 4年前
Epona (作者) 4年前
matteao (楼主) 4年前

个人觉得越简单越好,无论是分支还是fork对于版本控制,和线上业务回滚来说都过于复杂。对于功能的迭代可以在代码里做开关,进行控制。

4年前 评论
matteao (楼主) 4年前

在开发功能之前 从master上切一个分支出来 功能做完之后推到远端 在发起合并。分支建议以名字+日期+功能命名。而且分支多一点也无所谓吧 这些开发的分支在开发完之后都能删掉

file

4年前 评论
matteao (楼主) 4年前

@largezhou ,@勺颠颠, @Epona , @Jinrenjie , @zxx123 , 比如说,有如下场景:我的源仓库固定两个分支:develop (团队成员开发的源分支),master (主分支,发布上线版本用, 代码永远来源于develop 分支)。现在我开发一个功能,我从develop 拉取代码到本地,然后在本地,开一个功能分支,开发完毕,提交到本地仓库,合并分支到本地develop ,并删除功能分支。那么,现在我本地的develop 分支代码是如何提交到源仓库的develop 分支?1. 提交到一个新的分支,然后pull request,请求管理员合并到develop 分支,然后删除新的分支? 2. 直接有权限提交到develop 分支?

4年前 评论
matteao (作者) (楼主) 4年前

@matteao 你先区分下推(git push)和提交(git commit)。

我们现在也是两个分支,一个 master(产线),一个 test(测试机)。

开发流程:

pull master 分支。

checkout -b my_name_dev 分支开发。

开发完,commit 后,切换到 test 分支,把 my_name_dev 合并到 test。

push test。这个 test 是都有权限 push 的。

测试没问题后。

push my_name_dev 分支。这一步之前,偶尔会先更新本地的 master 分支,再合并到自己的分支,解决冲突。

在网站上提交 pr,有权限的人看到后,审核代码,并确认合并。

线上是会有很多个人开发分支,,,合并完的自己删掉就行,不知道有没有什么定期自动删的。

4年前 评论
matteao (楼主) 4年前
matteao (楼主) 4年前
largezhou (作者) 4年前
matteao (楼主) 4年前

file

4年前 评论
matteao (楼主) 4年前

file我们的做法和他们是一样的 而且不用太在意远程仓库上有很多分支啊。如果真的有洁癖 那么提交pr的时候把这两个选项勾上,这样当你的分支合并入主分支就会把 该分支删掉

file

4年前 评论
matteao (楼主) 4年前

看你愿意操心到什么程度,一般内部企业来说,根据分支提PR就可以了
1.最省心的方式,全部都往master上推送,这样也没什么大问题,直接撸代码就可以了,甚至对git不了解的开发者也能很快的就提交上来他们的代码

2.稍微操心一点的方式,其余的人随便建什么本地分支都可以,master设置成保护分支,不允许开发者推送合并master,只有发起合并请求或让管理员进行合并才可以

3.再操心一点的方式,建立 dev 分支,所有人只能推送或发起合并请求到 dev 分支上, dev 分支可直接用于开发和测试环境使用,然后直接合并最终版本的 dev 分支到 master 上, 当然了还是得管理员负责这个

4.再再多加一点关注的方式,在3的基础上,周期性的从最新的 dev 分支上建立对应开发任务的分支 比如 task-1, 所有开发人员对于该task-1再进行分发,比如 task-1-01,只能提交合并到 task-1 上,然后任务分支合并到 dev 分支上,用于测试, 测试通过再合并到 master 上,这个最好额外配合一些项目管理系统使用, 可以直接使用上面的任务id来做分支,这样保证了规范和可追踪

另外再说一个我接触过一些日本开发项目, 他们的项目只能接受PR, 所以只能 fork 后进行处理,因为项目不大,只有一个 master,这样的话,其实对于分支来说比较无所谓了

4年前 评论
matteao (楼主) 4年前

这个合理的分支策略看场景、项目、团队多个因素吧,可以简单来,也可以严格来,我这边基本分支分三系:

  • 1 生产分支 master -> 生产HotFix或小需求维护分支 master-release
  • 2 测试分支 develop
  • 3 开发分支:一般推荐都是自己本地新建一个基于develop的分支,做开发分支,这个分支也要push到远程,分支名字后缀加开发人的名字

为什么不用develop做master的日常维护,因为做的项目是内部项目,迭代周期很长的,基本develop和master提交会差很多,只有正式要上线develop所有功能的时候,才会把develop合向master。
本地开发结束,需要给测试人员测试的时候,有专门code review将开发人员的开发分支合向develop

4年前 评论
matteao (楼主) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!