基本步骤与分支策略有关,此处以项目有稳定发布主分支,开发人员在同一个特性分支上做开发,单独拉取分支解决缺陷 bug为例。
总体分为三个步骤
- 1 - 创建缺陷修复分支
- 2 - 修改,处理并推送
- 3 - 合并入主开发分支
I - 创建缺陷修复分支
首先需要以当前主开发分支即特性分支为基础,创建缺陷修复分支
- 拉取仓库代码,此处假定 ssh-key 权限等均配置完成
git clone ssh://git@xxxx/project.git
- 切换到特性分支
git checkout feature-xxx
- 创建缺陷修复分支
此时分支只存在于本地仓库 因此还需要进行后续操作git branch feature-xxx-bug-fix
- 切换到此分支,并将分支推送到远端仓库
git checkout feature-xxx-bug-fix # 切换到缺陷修复分支 git push -u origin feature-xxx-bug-fix # 将在远端仓库创建此分支
II - 修改处理并推送
修改完代码后,需要将代码推送到远端,然后合并入主开发分支。
有些 Git 管理合并分支的要求是:待合并分支的提交历史不能落后主开发分支太多,否则无法完成合并。因此还需要与主开发分支同步。
基本操作步骤如下:
- 1 查看当前的修改,修改了那些文件
git status
- 2 贮存本地修改
git stash
- 3 将远端仓库的更新拉取到本地
git pull
4 将特性分支的提交合并到本地分支,为了与主开发分支同步
git merge origin/feature-xxx
此处也可以使用
git rebase
, 若刚入门不建议使用5 将本地的修改内容合并到工作区
git stash pop
- 6 处理冲突
此处如果修改同一个文件则需要处理冲突,可以使用 vscode 的扩展 GitLens
https://marketplace.visualstudio.com/vscode
使用 vscode 打开根目录,切换到冲突文件,会出现大致如下情况。另一位或多位开发修改了相同的位置。
如上图,第一行标红处
Accept Current Change 仅保留别人的修改
Accept Incoming Change 仅保留自己的修改
Accept Both Changes 两者都保留
视具体情况而定。
- 7 将修改添加到暂存区,若没有新增文件则可以直接
git add -u
-u
表示 update 仅更新
若有添加文件则需要添加文件路径git add 文件路径
- 8 提交到本地仓库
git commit -m "修复xx缺陷"
- 9 推送到远端仓库
由于在 I 中已经指定了推送的远端分支,这里可以省去git push
-u origin 推送分支
。
III - 合并入主开发分支
此处需要在 Web 端操作,以 GitLab 为例,需要创建 Merge Request (合并请求) ,此处可以设置 合并选项 (Merge options) 如下图
Delete source branch when merge request is accepted (接受合并请求时删除源分支),如果此缺陷已经完全修复则可以勾选。
Squash commits when merge request is accepted (接受合并请求时压缩提交),如果此缺陷提交 (commit) 了多次的修改,为了避免主分支提交记录杂乱,可以勾选此选项,用于压缩为主开发分支的一条提交记录。
参考链接: https://git-scm.com/book/zh/v2 - [Git 官网操作手册]