Git项目使用规范及常用命令

分支种类

项目分支

  • 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方式首次克隆需要帐号和密码)

1
2
# 本机地址省略则默认文件夹名字为仓库中的项目名称
git clone <仓库名> <本机地址>

创建分支

根据场景需要(feature或hoxfix)基于master创建对应功能分支

1
2
git checkout master
git checkout -b <个人分支名>

提交代码

当完成个人的功能开发后使用

1
2
3
git status #查看本次要提交的代码状态
git add . #将文件添加进暂存区, 使用.一次添加本次的所有文件
git commit -m “<本次提交的信息。例:完成开课功能模式>” #给本次提交添加一个commit,本次提交干了什么事

合并代码

testing分支合并

1
2
3
4
5
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分支合并

1
2
3
4
5
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合并代码

1
2
3
4
5
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分支的代码为了保证安全与稳定,在确认个人开发分支在测试线与预发布完成验收后,需要去阿里云效后台手动触发对应流水线的运行(或合并请求完成后自动运行)


常用命令

经常会用到的命令

1
2
3
4
5
6
7
8
9
10
11
12
13
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过程中如果发生合并冲突,解决完冲突后使用

1
2
3
git add .
git merge --continue #完成本次冲突合并,继续下一次合并
git merge --skip #跳过本次冲突

git找回误删除的本地分支

1
2
git reflog show --date=iso #以标准时间显示所有的提交信息(包括切换分支、删除分支、提交分支等信息)
git checkout -b <要恢复的分支名> commitId #找到要恢复分支的操作信息,复制粘贴最前面的commitId