Git使用规范&&Git常用命令
分支规范
master分支
- master的分支HEAD和历史commit均是是稳定、可发布的状态。
- master分支的每个commit都需要打tag,如v1.0、v1.1、v1.2、v2.0等。
- 仅能从test分支和hotfix分支合并过来。
hotfix的合并必须是通过代码审核和测试验证的。
从test合并时,既要达到测试认可的质量状态和产品认可的功能状态。 - master分支只有组长和负责人有权限进行提交代码
dev分支
- 主开发分支 , 基于master分支克隆,理论上讲dev分支代码与master分支保持一致
feature分支
- 当代码改动范围较大,可以从dev分支切出一个feature分支进行开发。
如进行代码重构时,切一个feature/feature_security分支。 - 可以同时存在多个feature分支
- feature分支迭代中不可从dev分支merge新的改动。
- 若对应feature仅单人负责开发,无需协同开发时,应只存在于本地仓库,不push到remote仓库。
- feature 分支理论上讲是需求开发之前组长来拉取,分支命名规范为:feature/feature_功能名 ,举例安全改造2.0开发分支为:feature/feature_security2
test分支(仅组长进行合并代码)
- 测试分支 , 基于feature分支合并到dev之后 ,提测阶段,修复bug可以直接在此分支上进行修改也可以直接由feature分支直接合并到test分支
- test分支提测时可由组长进行合并
- codereview的时候可以将test与master分支进行对比。
hotfix分支
- 补丁分支 , 基于master分支克隆 , 主要用于对线上的版本进行BUG修复
- 线上bug修复完成上线以后,需要将hotfix修复内容合并到当前提测分支上
- 由组长来拉取
git提交流程
代码合并(统一全部使用rebase)
命令方式
git pull --rebase
或者
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分支
IDEA方式
Tag 使用规范
需求版本大版本根据:V1.0.0 往后累加 V1.1.0
修复bug小版本上线: V1.0.0往后累加V1.0.1
# 查看当前所有tag
git tag --list
git tag -a V1.0.0 -m "xxxxx需求上线"
git push --tags
常见git使用命令
创建分支,并且推到远端
git checkout -b feature/feature_security dev # 基于dev分支创建
git push origin feature/feature_security
也可以直接基于dev分支直接推送分支
git push origin dev:feature/feature_security # 这样会创建分支并且将分支push到远端分支
git stash暂存
git stash
使用的场景一般有两种:
-
多人修改同一分支,我在本地修改好后,发现远程分支已经被改动了,此时是无法pull的。
git stash #先将本地代码暂存至缓存区域 git pull --rebase #再更新代码至本地 git pop #再将暂存区域代码重新加载到本地
-
不小心改动了其他分支代码。比如本来是在
feature/feature01
分支上开发,一不小心切换到了master
分支,并且在master
分支上修改了代码,这个时候想把代码切换到feature/feature01
分支git stash #先将本地代码暂存至缓存区域 git checkout feature/feature01 #再将分支切换到feature/feature01分支 git pull --rebase # 非必须步骤,更新远程代码到本地 git pop #再将暂存区域代码重新加载到本地
提交代码
建议:每次提交代码时,如果是同一个功能代码,提交时都提交到本地,不要每次都push 到远端,是同一个功能的合并为一次提交,较少无效的提交,比如同一个文件修改多次,提交多次,修改一个备注提交多次。
git add . # 添加提交内容 ‘.’表示当前目录所有,如果需要单独添加某一个文件:git add xxx.txt
git commit -m 'feature(bin): add first commit' # 提交代码到本地仓库
git push origin master # 将代码推送到远程仓库
查看所有远程仓库引用名
git remote
查看远程分支列表
git branch -a
合并某一次提交
git cherry-pick 'commit-id'
查看文件在工作区、暂存区、本地仓库中的状态
git status
修改提交的注释(未push到远端记录)
git commit --amend
按键i可进入编辑模式(与vim用法相同)。ta
按键ESC可退出编辑模式
wq:退出保存
q!: 退出不保存
保存以后退出,再查看一下提交内容是否被修改git log
修改某一次提交的注释(未push到远端记录)
首选需要找到需要修改的commit it ,git log
找到提交的commit id ,只有两次以上的提交才可以使用,如果只有一次提交则使用git commit --amend
即可
git log
git rebase -i 28b197a00473ea1b46fab13263c294cce0d7401c
修改完注释以后需要把 pick
改为reword
.
修改提交的注释(push到远端记录)
使用上面的方法也可以
这里修改完成以后需要强制推到版本分支才可以。
git push origin master -f
所以这里需要注意下,一般情况下不要这么处理
更新代码到本地并且进行合并
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分
git rebase origin/feature:test # 将代码合并到测试分支
git pull --rebase # 将代码更新到本地仓库并且合并到当前分支
本地并且进行合并
git fetch # 将远端代码更新到本地仓库
git rebase origin/master # 将代码合并到当前分
git rebase origin/feature:test # 将代码合并到测试分支
git pull --rebase # 将代码更新到本地仓库并且合并到当前分支