分支种类
项目分支
- master (生产环境分支、受保护分支,不可以直接推送,可用个人开发分支发起合并请求进行合并)
- release (预发布分支,测试环境测试完成后推送至此分支)
- testing (测试分支,开发完成后推送至此分支进行测试)
- feature (个人或小组开发分支,以master为基准拉取该分支,feature分支上的内容最终会合并到testing分支进行测试,测试完成后会与预发布进行合并,验收后合并至master)
- hotfix (bug/修复分支,以master为基准拉取该分支,解决后提交到testing,测试没问题后提到release分支验证通过后和master合并)
个人分支
- feature (个人或小组开发分支)
个人名字拼音+创建分支的时间+功能名+feature
- hotfix (bug/修复分支)
个人名字拼音+创建分支的时间+功能名+hotfix
例:zhangsan_20220801110013_updateTest_feature
git流程
克隆项目
首先需要克隆项目(克隆地址分为ssh和http两种方式,ssh方式需要使用sshkey,先在本机生成sshkey,复制进仓库后台个人设置sshkey。生成sshkey具体方式百度。https方式首次克隆需要帐号和密码)
# 本机地址省略则默认文件夹名字为仓库中的项目名称
git clone <仓库名> <本机地址>
创建分支
根据场景需要(feature或hoxfix)基于master创建对应功能分支
git checkout master
git checkout -b <个人分支名>
提交代码
当完成个人的功能开发后使用
git status #查看本次要提交的代码状态
git add . #将文件添加进暂存区, 使用.一次添加本次的所有文件
git commit -m “<本次提交的信息。例:完成开课功能模式>” #给本次提交添加一个commit,本次提交干了什么事
合并代码
testing分支合并
git checkout -b testing #初次使用先基于本地master,加-b新建本地testing分支,第二次以后可忽略本条
git checkout testing #切换至本地testing分支
git pull origin testing #拉取远程testing分支最新代码到本地
git merge <个人的开发分支> #将个人的开发分支代码合并到本地的testing分支上
git push origin testing #将本地testing分支推送至远程testing分支
release分支合并
git checkout -b release #初次使用先基于本地master,加-b新建本地release分支,第二次以后可忽略本条
git checkout release #切换至本地testing分支
git pull origin release #拉取远程testing分支最新代码到本地
git merge <个人的开发分支> #将个人的开发分支代码合并到本地的release分支上
git push origin release #将本地release分支推送至远程release分支
master分支合并
注:为了保证生产环境的代码安全,master分支是受保护分支,不可以直接推送,只允许个人分支发起合并请求向master合并代码
git checkout master #切换至本地master分支
git pull origin master #拉取远程master分支最新代码到本地
git checkout <个人的开发分支> #切换到个人开发分支,生产环境一定要先切回个人开发分支,再与master合并
git merge master #将本地master分支代码合并至本地个人开发分支上
git push origin <远程个人的开发分支> #将本地个人的开发分支推送至远程个人的开发分支
最后在仓库后台发起合并请求(gitlab或阿里codeup),将个人开发分支合并至master
代码的自动部署
testing和release分支,会在代码提交到该分支上时触发自动部署,master分支的代码为了保证安全与稳定,在确认个人开发分支在测试线与预发布完成验收后,需要去阿里云效后台手动触发对应流水线的运行(或合并请求完成后自动运行)
常用命令
经常会用到的命令
git init #进行git初始化,在本地文件夹中创建git仓库
git branch #查看本地所有分支
git branch -D <分支名> #删除本地的某个分支
git push origin :<远程分支名> #删除远程仓库上的某个分支
git branch -a #查看远程和本地上的所有分支
git fetch - -all #将远程所有的分支拉取到本地,如果本地查看远程分支,不显示所有远程分支时可以使用
git log #查看日志,显示所有提交过的记录,不包括删除的commit和reset操作
git reflog #查看日志,显示所有提交过的记录,包括提交和回退的操作,如果要回退版本,一般用这个查看日志
git reset - -hard <commit版本号> #可以回退到某一版本
git config core.filemode false #用此命令忽略因为修改文件权限导致的文件修改状态变动
git fetch origin #更新远程仓库数据到本地,拉取远程分支前如果报错可以使用此命令
git checkout -b <本地个人分支名> origin/<远程分支名> #拉取远程分支到本地并创建本地分支
git remote prune origin # 清理本地已删除分支的记录(影响tab自动补全)
git解决合并时产生的冲突。在merge过程中如果发生合并冲突,解决完冲突后使用
git add .
git merge - -continue #完成本次冲突合并,继续下一次合并
git merge - -skip #跳过本次冲突
git找回误删除的本地分支
git reflog show - -date=iso #以标准时间显示所有的提交信息(包括切换分支、删除分支、提交分支等信息)
git checkout -b <要恢复的分支名> commitId #找到要恢复分支的操作信息,复制粘贴最前面的commitId