前言

入职满一个月了,目前我们组是使用gitlab合作开发,在这里总结了一下git的使用流程。这一套流程是我目前自己在用的,感觉还不错。

初始化仓库

1
2
3
4
5
git clone + URL //创建本地仓库
git checkout origin/dev -b dev //拉取远程dev分支到本地dev分支
git checkout -b ningliu //新建自己的本地分支ningliu(ningliu是我的名字)
git push --set-upstream origin ningliu //把自己的本地分支同步到远端分支
git checkout ningliu //确保在自己的本地分支操作

每次修改完代码

1
2
git add . //把自己的修改推送到本地index区
git commit -m "这里写提交的信息哦" //把自己的修改推送到head区,并附加提交信息

备注:不理解index区和head区等基本概念的推荐阅读 [git - 简易指南][1]。 这篇文章足够了解基本概念了。

重头戏:更新到远端仓库

我是将以下代码保存成git.sh文件,放在项目根目录下,每次运行sh git.sh即可自动实现以下命令。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/bin/sh

if [ $? -ne 0 ]; then
exit 1
fi

MAIN="dev"
# 将变量 ME 的值改为自己的分支名
ME="branch_name"

git push # 把本地自己分支的修改推送到远端自己分支
git pull # 拉取远端自己分支的更新
git merge origin/${MAIN} # 把远端dev分支合并到本地自己分支
git push # 把本地自己分支的修改推送到远端自己分支

git checkout ${MAIN} # 切换到本地dev分支
git pull # 拉取远端dev分支的更新
git merge ${ME} # 把本地自己分支合并到本地dev分支
git push # 把本地dev分支的修改推送到远端dev分支

git checkout ${ME} # 切换回自己的本地分支

每行命令我已经加上了注释。总之这几行命令实现了本地和远端自己的分支、本地和远端的dev分支的同步。前四行是实现自己分支的最新化,后四行是实现dev分支的最新化。

如果同步过程中遇到冲突,再自行解决。

总结

这是我目前最顺手的git工作流程,如果有更好的实践,欢迎大家一起讨论。

补充场景

根据工作中遇到的场景越来越多,特此做一下补充:

场景一:上线前需要合并master分支

每次上线都要合并master,为了保证代码的新鲜度,这个时候可以用以下命令合并master分支:

1
2
git fetch #下载一下远程代码
git merge orgin/master #把master分支合并到当前分支

场景二:修改线上BUG

先在gitlab上基于master新建一个新的修改bug分支,例如master_fix
然后使用以下命令:

1
git fetch origin master:master_fix #拉取远程分支到本地

需要修改的内容在这个分支修改就可以了。