# git常用技巧
# 分支管理
# 主干分支
一般主干分支应该有3个分支:master
、release
和develop
。
不推荐直接提交或合并代码在
master
分支。有当前版本要发布的功能可以合并到
release
分支上,其它的新功能应该合并到develop
上。master
分支的代码,应该只是一个迭代完成后,由release
合并过来,再打上发版标签。应该在远程仓库层面(比如
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
,使用步骤一般如下:
git fetch origin test
。意思是同步远程test
分支代码到本地remotes/origin/test
。后者其实是远程分支的一个本地备份(用git branch -a
可以看到)。git rebase remotes/origin/test
解决冲突,提交
再看提交记录,干干净净。
vscode
如果你使用vscode
,在可视化工具里,在拉取-推送
中,选择拉取(变基)
,与上面用代码处理是一样的