# git常用技巧

# 分支管理

# 主干分支

一般主干分支应该有3个分支:masterreleasedevelop

  1. 不推荐直接提交或合并代码在master分支。

  2. 有当前版本要发布的功能可以合并到release分支上,其它的新功能应该合并到develop上。

  3. master分支的代码,应该只是一个迭代完成后,由release合并过来,再打上发版标签。

  4. 应该在远程仓库层面(比如gitlab)把这3个分支保护起来,不允许直接提交,必须经合并。

# 开发分支

平时开发一定要新建分支,分支名称按功能(feature)可以命名为feat-xx,修复bug可以命名为fix-xx

代码push到远程后,在gitlab页面上请求合并,经团队其他成员(一般是leader)code review后才能合到主干分支。

# 初学者合并代码

对于初学者而言,如果担心自己的代码丢失的话,在pull代码之前,可以再开一个分支,把它push到远程。这样即使与别人代码冲突,解决的有问题,也可以从服务器上把自己的代码拉回来。

或者合并前,再建一个分支作为备份,等合并成功后再删除该分支。

# 善用rebase

rebase翻译成中文是变基的意思,好像也没那么好理解。平时都用merge,很少用它,因为不熟嘛。

最近上爪哇教育的公开课,止水老师这块讲的比较透彻,git rebase有一大堆参数,可以用来修改提交记录,甚至可以改变顺序。

在我看来,最大的作用是可以给我们一个干净的记录。

平时经常有这样的情况,A同学修改了文件1,提交后push到远程服务器; B同学也修改了这个文件,提交后也想push,失败,提示必须先更新,一更新就冲突。

解决冲突后,提交记录就被污染了,必须提交一个解决冲突的信息(Merge branch 'test' of gitee.com:xx/test into test),它对于我们而言并非必要的。

这时就轮到rebase出场了。

假设分支名称为test,使用步骤一般如下:

  1. git fetch origin test。意思是同步远程test分支代码到本地remotes/origin/test。后者其实是远程分支的一个本地备份(用git branch -a可以看到)。

  2. git rebase remotes/origin/test

  3. 解决冲突,提交

再看提交记录,干干净净。

vscode

如果你使用vscode,在可视化工具里,在拉取-推送中,选择拉取(变基),与上面用代码处理是一样的