使用Git自动化代码管理
分布式版本控制系统,版本控制软件。
若有冲突,用pull来解决后提交。pull后就能看到是否有代码冲突。
查看已有的本地及远程分支
git branch -a
删除本地分支:
git branch -d dev 【git branch -参数 本地分支名称】
删除远程分支:
git push origin --delete dev 【git push origin --参数 远程分支名称】
远程分支和本地分支删除完毕
git使用:如果已经commit,怎么恢复? 直接Revert 回退即可。
回滚和版本回退,命令特别常用。
git merge request 功能的使用;
release分支不能push管理(权限管理实现)
1、注意:open表示未合并状态,Merged表示已经合并状态。
2、在流程层面保证所有的代码合并都是经过审核的,并且可以做到有迹可循。
3、基于权限控制进行代码的合并请求。
如何禁止GitLab分支被push?
代码必须经过codereview才能合并到release;
限制一个分支被push,可以有效防止分支被意外修改覆盖,尤其在多人合作中,是有效的权限管理手段。
分支保护:Protect a branch;
只有master权限才能合并到release分支。
这样所选分支对于所有 Developer 权限的账号,都无法 push,从而起到保护作用。
原文链接:https://jingyan.baidu.com/article/90808022f07cc5fd90c80f7e.html
GitLab的权限管理及Merge Request
团队目前在日常开发工作中都是在线下进行代码审查,但是这样的模式根本无法做到过程留痕。因此,需要使用GitLab的Merge Request或者Gerrit这样的工具进行过程管理。这里详述一下如何通过Merge Request进行线上的代码审查。
角色权限
从上图可以看出来,Maintainer能够push代码到受保护分支,而Developer只能创建Merge Request,这就为团队推行强制代码审查并做到有迹可循提供了技术保证。
3、强制代码审查
一、设置受保护分支
创建及批核Merge Request
第一步:Team1_Dev(开发人员)创建MR并提交,MR主要填写以下5个参数:(同步你可以根据团队情况选择勾选【remove source branch when merge request is accepted】)
创建合并请求并提交,填写的参数有哪些?
Title:合并的分支名
Description:这次合并内容描述
Assignee:有谁负责合并,由谁负责coreReview?
Source branch:源分支
Target branch:目标分支
Submit Merge Request按钮,下面是这次合并改变Change的内容。
原理是:发了一个合并请求给代理人,由代码人合并当前代码。
第二步:Team1_Leader登录,在【Merge Request】的角标已经提醒有一个request需要审核。
然后,在点击该merge request后,可以通过GitLab自带的Web IDE或者下载到本地IDE进行查看。
第三步:在代码审核无误后,可以添加comment并点击【Merge】进行代码合并,可以看到这时候的左上角状态仍然是【Open】。
在点击【Merge】后,可以看到代码合并已经成功,这时候左上角状态变为【Merged】。
三、历史查询
通过菜单 Project 选择你想进入的项目,然后点击【Merge Request】,然后再点击【All】即可展示所有的代码审查历史,这样就能在流程层面保证所有的代码合并是经过审核的,并可以做到有迹可循。
代码合并的详情
原文链接:https://blog.csdn.net/justyman/article/details/90142327
代码CodeReview
1)对某个分支向某个人发送合并请求;
2)合并请求所在的url,直接进去即可合并代码。
3)对某行看不懂的代码进行注释,请求合并者解释后才能进行合并。
http://192.168.110.53/com.pica.cloud.base.doctor/pica-cloud-doctor/merge_requests/34
创建合并请求。
使用Merge Request时的操作步骤:
1)、编写代码并将其推送到单独的分支。
2)、为主要开发分支创建合并请求。 Assignee以及说明字段和评论中被提到的那些人将通过电子邮件通知合并请求。如果需要某一位开发人员关注,你可以在描述字段中@该名开发人员。
3)、等到MR被接受或拒绝,并提供有关必要修复的评论。
4)、参与有关修复的讨论。 (GitLab允许回复评论)
5)、修复。
6)、将更改推送到你的分支。
7)、打开一个新合并如果最后一个MR被关闭(如果合并请求未关闭,它将自动更新,直到最后一次提交为止)。
8)、通过注释合并请求或以其他方式报告已实施的修复。
如果代码有问题,在代码的前面添加疑问;
点击这个,表示resolve discussion问题已经解决;Resolved all discussions才能合并。
gitLab的使用
git创建项目组
项目组的存储路径,项目组的名称,不是创建项目么?
通过git组管理配置项目和代码项目。com.pica.cloud.base.hospital 是git项目配置中心所在分组的名称
新建组后,在组中添加项目,比如pica-cloud-doctor项目,配置项目pica-cloud-configuration。
今天就把这两个弄好就行了。
组下面有两个项目,通过项目名称进行区分。
gitlab的使用
当前面板:是组或者项目的所有设置。都可以在当前面板进行处理。
创建组:1、点击“New group“创建项目组。(组名称,组的存储路径,组的描述,组的图标)
添加人员:选择添加人员,人员权限,权限使用时间;组内人员列表;
删除组:remove group。重命名组的名称,confirm。
项目管理
创建项目,填写项目基本信息,项目名称。
根据自己的需求,使用命令行初始化工程。
项目添加人员:点击”Settings“–>点击”Members”—>填写基础信息—>点击“Add to project”
一会自己走一遍这个流程。
gitlab如何添加用户?(新入职员工,添加用户)
1.用root 管理员登陆。2. 点击管理区域。3. 点击New User。4. 输入用户相关信息。
用户名和email地址,让用户自己设置密码。选择用户角色:当前用户是普通用户还是管理员。
5.用户会收到邮件如下画面,点击设置密码即可。
把用户添加到项目和把用户添加到组 不一样的按钮。
这就是gitlab的使用,没什么难的。其他的版本协作工具的使用都是一个流程。
能解决我当下遇到的哪些技术问题?
如果需要进行代码测试,重新拉一个分支进行处理;
只要不合并到主干,分支随便拉,特别方便。
git checkout 分支名称
合并分支
回滚分支,强制推到远程分支。
分支管理,标签管理,git工作流。
git安装:从官网下载软件或者360软件助手。
git安装完成后,需要配置用户信息。
git config --global user.name “crs”
git config --global user.email “258@qq.com”
git config --list 查看配置信息是否成功(用户名和密码是否显示)
sourcetree git的图形化界面工具,很好用。
git仓库其实就是一个目录。
初始化版本库: git init 新建文件夹后,直接git init即可。
添加文件到仓库: git add git commit(描述信息)
查看仓库状态: git status
查看当前所在的目录:pwd
查看当前目录下的文件信息:ll
回到上级目录: cd ..
创建文件目录:mkdir 目录名
$ git init
Initialized empty Git repository in D:/test/demo1/.git/
用echo显示字符串
echo命令:当你需要在屏幕上显示一些提示信息时,你就需要 echo 的帮忙,它就像一个麦克风,说你想说,唱你想唱。
$ echo "git 2" >> text.txt 向某个文件中追加字符串
$ echo "hello world"
用 echo 显示变量的值
在 echo 的后面,不仅可以加字符串,还可以加变量名:
#我们定义了一个变量, 叫作str [roc@roclinux ~]$ str="Hello World" #在echo后面加上str变量, 照样可以显示出来 [roc@roclinux ~]$ echo "$str, good morning" Hello World, good morning
$ git status
On branch master
No commits yet
nothing to commit (create/copy files and use "git add" to track)
什么是git工作流?
工作区(idea)--->暂存区(add)--->本地仓库(commit)
git add 如果添加了错误的文件的话
撤销操作
git status 先看一下add 中的文件
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.java 就是对某个文件进行撤销了
reset( 将…恢复原位)
重置分支到某次提交
删除某个文件后,要重新提交才行。否则远程仓库中文件还存在。
untracked file 将目录里的所有文件提交到暂存区后。
为什么要创建SSH key? 因为本次仓库和远程仓库之间代码是加密传输的。
可能是个隐藏文件,id_rsa.pub中,key以自己的邮箱结尾。
如何创建SSH key?
如何添加远程仓库?
1)把本地仓库和远程仓库关联;github已经帮助我们生成好了代码,直接执行即可。给本地添加一个源 git remote add origin 远程仓库地址。
2)把本地文件推到远程仓库中。
git push -u origin master git push
此命令将本地的master分支推送到origin主机,同时指定origin为默认主机,后面就可以不加任何参数使用git push了。
为什么要clone仓库?
需要将远程的代码拷贝一份到本地,在本地进行开发。
为什么要进行标签管理?(里程碑管理,每个版本封板的时候打个标签)
通过在版本库中打一个标签,该标签对应的时刻,通过标签回滚到某一个版本。
创建标签和删除标签的速度特别快。通过标签来回滚。
git tag 查看所有标签
git tag name 创建标签
git tag -a -name -m "comment" 提交标签时指定信息,比如版本号
git tag -d name 删除标签
git push origin dev-20190628标签发布到远程
在github的branch上面看tags
分支管理
在自己的分支上工作,想怎么样都行;一定要考虑是否需要新建分支?
如何通过命令创建分支? git branch 分支名
如何查看当前有哪些分支 git branch
如何切换分支 git checkout 分支名
如何合并分支?
如何删除分支? git branch -d 分支名(原来误建的分支都没有删除)