在使用 git 进行代码版本管理的过程中,经常发现在需要修复突发性 bug 的时候,很多初学者总是采用很粗暴或者说并不太友好的方式进行操作,不但操作方式别扭,而且还容易导致代码混乱。下面简单的说下一般 bug 的修复操作方式。

例如有分支若干

1
2
3
4
5
master
develop
lixx
wangxx
zhaoxx

lixx wangxx zhaoxx 这些分支都是具体开发者的分支,develop 保持最新,master 为发布的版本, 目前需要在 master 上修复一个 bug,操作流程如下:

1
git co -b fix_888 <master last hash id>

在 master 分支上,基于最新的 hash id 创建一个分支 fix_888 ,此时在 fix_888 上修复代码,之后合并到 master ,而其它分支也可能需要合并这部分代码,而其它分支的代码已经远远的超过了 fix_888 这个节点,直接 git merge 是行不通的,此时需要git cherry-pick 处理可能比较方便一点。因为其它分支已经远远的超过的 fix_888 ,所以cherry-pick以后也可能是会出现冲突的,这个时候解决冲突再次提交合并到develop.

大体的一个过程是

1
2
3
4
5
6
7
8
9
10
git co master // 切换到 master 分支
git co -b fix_888 <master last hash id> // 基于 master 分支的最新hash id 创建分支
// 此时 fix some code 并且提交

git co master
git merge fix_888
// master 代码修复结束了

git co develop
git cherry-pick <fix_888 commit hash id> // 将 fix_888 提交的代码用到 develop 分支
// 如果有冲突修复,没有直接 push
// 其它开发人员从 develop 拉最新的代码即可。

以上有些命令是可以省略的,或者可以有更加优化的流程可以选择,git 功能强大,还有很多功能需要探索,若您有更好的方式,求指导。