虚机ubuntu下局网搭建gitlab服务器

部署过程:

  • 坑一:当安装了postfix后,发现需要重新配置成internet,使用命令

sudo apt-get install gitlab-ce

然后就是参考过程:

https://blog.csdn.net/discoverer100/article/details/51814171

  • 坑二:本人禁用了先前安装的nginx,把external_url改成了“http://192.168.23.128:8010”,才顺利OK。否则看到的界面有问题,是CSS等资源不完整的显示。此时虽然能有改密码的界面,但不会成功的。如果是想和即有的nginx配合,请参考:https://jingyan.baidu.com/article/6525d4b1b5d89dac7c2e944a.html
  • 坑三:腾讯云把gitlab做起生意了,如果想在上面搞,域名和证书都要理顺,而且会对外界资源有排斥。

用户数据设计:

以下基于本人环境,不用参考。

root下面有codera,coderb,coderc

codera下面建立一个标准项目:bgsvc4hbw

grp4task1下面指定codera是owner(负责人),由root创建组,再邀请codera

此后,codera又建立了一个仓库flowshow用于研究git工作流。

进阶应用:

管理员密码重置

https://blog.csdn.net/weixin_30687051/article/details/97273880

工作流学习链接:

https://blog.csdn.net/qq_32452623/article/details/78905181?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-1.control

小结一下,gitflow的心得:

1)feature都是起止于develop分支(回归develop时使用:git merge –no-ff)

2)hotfixs是起于master,止于同时推给master(打tag且尾号加1)和develop(回归方式cherry-pick)

3)realse是起于develop,和hotfixs永远不发生关系,止于性质与hotfixs相同,但区别tag是前一位版本号加1。同样不使用merge来回归develop

4)对于master外的发布,可以根据环境灵活建立分支,比如一平台一分支。

5)tag一般不会隐式推送到远端,所以,可以只选择大版本来显示手工命令推送。

https://blog.csdn.net/github_27263697/article/details/79563949

备份和迁移

https://blog.csdn.net/qq_40907977/article/details/106756999

git工作流设计

对于源码管理和产品线管理为了避免混乱,应该有个大致的管理方案:
项目名假如为:tj_dj
则产品管理线:(主机)
主分支–master
开发分支–develop-tj_dj
发布分支–release-tj_dj
特性分支(短生命线分支)–f-[特性名]-tj_dj
修复分支–hotfix-tj_dj

轻量级开发情况:(AB机间没有网络)
在各自本机建立环境,本地建立好bare仓库和本地开发仓库。
总体上要求,bare仓库是同名的,但在自己的本地开发仓库中把远程仓库命名个性化。Dell为例:
dell-前缀。
技巧:
bare仓库用来fetch和push的“箱子”,为远程仓库。
使用拷贝方式来和其它机共享bare仓库。
各机器为主工作时,则要使用很多分支技术来merge其它机的进度代码。

多人联合开发情况:
这里就仁者见仁,智者见智了。但是最典型的就是gitflow了。但不是起对了几个分支名就行了。要得其要领。
原则:
master和develop分支是稳定分支,一直存在。
master只允许release和hotfix分支来的merge
develop日常开发
feature上开发功能,功能成熟后合并到develop上
release是从develop上分出来,bug修复后,打上tag后,要同时合并回develop和master
很小的bug修复会则会在hotfix上进行。
1). 首先将远程代码拉取到本地
  git clone xxx
  git checkout -b develop origin/develop
2).新建feature分支
  git checkout -b feature
3).多人在feature上开发,如果中途需要将develop的变更合入feature,所有人需要将本地的代码变更提交到远程
  git fetch origin
  git rebase origin/feature
  git push origin feature
然后由feature负责人rebase develop分支,删除原来feature分支,重新新建feature分支;
  git fetch origin
  git rebase origin/feature
  git rebase develop
  git push origin :feature
  git push origin feature
这样可以保证feature保持线性变更;
4).feature开发完成后,所有人需要将本地的代码变更提交到远程
  git fetch origin
  git rebase origin/feature
  git push origin feature
然后由feature负责人rebase develop分支,然后将feature分支合入develop,删除feature;
  git fetch origin
  git rebase origin/feature
  git rebase develop
  git checkout develop
  git merge feature
  git push origin :feature
这样可以保证develop保持线性变更,各feature的变更完整可追溯;
5).合入feature后拉出对应的release/feature分支,后续bug修复在release/feature上
  git checkout develop
  git checkout -b release/feature
release/feature分支的同步合并与feature分支相同
6).release/feature分支bug修复完成后,拉取对应的tag推送远程进行发布
  git tag -a v1.0 -m ‘feature发布’
  git push origin v1.0
之后将release/feature合入develop分支,然后删除
  git rebase develop
  git checkout develop
  git merge release/feature
  git push origin :release/feature
7).发布完成后将release合入master分支,保证master为最新稳定版本(实际操作为发起merge request)