Git 使用规范流程
团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。
否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。
第一步:拉取代码
- 普通取代码
$ git clone git@code.aliyun.com:bingtuan/xxx.git
- 指定分支maindev取代码
$ git clone -b maindev git@code.aliyun.com:bingtuan/xxx.git
第二步:创建分支
首先,每次开发新功能,都应该新建一个单独的分支。
1. 获取开发分支的最新代码 $ git checkout maindev
$ git pull
2.新建一个开发分支xxfeature_20180829 $ git checkout -b xxfeature_20180829
第三步:提交分支commit
分支修改后,就可以提交commit了。 $ git add --all
$ git status
$ git commit --verbose
- git add 命令的all参数,表示保存所有变化(包括新建、修改和删除)。从Git 2.0开始,all是 git add 的默认参数,所以也可以用 git add . 代替。
- git status 命令,用来查看发生变动的文件。
- git commit 命令的verbose参数,会列出 diff 的结果。也可以使用
git commit -m "xxxxxx"
直接commit,不会有以下第四步。
第四步:撰写提交信息
提交commit时,必须给出完整扼要的提交信息,下面是一个范本。
#
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch xxfeature_20180829
# Changes to be committed:
# new file: html/git_bingtuan_use.html
#
# ------------------------ >8 ------------------------
# Do not touch the line above.
# Everything below will be removed.
diff --git a/html/git_bingtuan_use.html b/html/git_bingtuan_use.html
new file mode 100755
index 0000000..f7fc981
--- /dev/null
+++ b/html/git_bingtuan_use.html
...
第五步:与主干同步
分支的开发过程中,要经常与开发主分支保持同步。 $ git fetch origin
$ git rebase origin/maindev
-
git pull
与git fetch
都是从远程获取最新版本到本地,但git fetch
不会自动merge; -
git rebase
与git merge
都有可能产生冲突,但是解决的方法不一致;
在rebase
的过程中,也许会出现冲突(conflict). 在这种情况,Git会停止rebase
并会让你去解决 冲突;在解决完冲突后,用git-add
命令去更新这些内容的索引(index), 然后,你无需执行 git-commit
,只要执行: $ git rebase --continue
这样git会继续应用(apply)余下的补丁。
在任何时候,你可以用--abort
参数来终止rebase
的行动,并且xxfeature_20180829
分支会回到rebase
开始前的状态。 $ git rebase --abort
在merge
的过程中,也许会出现冲突(conflict),此时Git会merge完成后会列出结果,Auto merge
or conflict
文件,此时需要解决冲突,解决完之后使用以下命令重新commit; $ git add git_bingtuan_use.html
$ git commit -m "conflict fixed"
以下冲突示例,解决的过程中需要注意不要误删其他同事代码
团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。
<<<<<<< HEAD
每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。.
=======
否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。
>>>>>>> xxfeature_20180829
Git用<<<<<<<
,=======
,>>>>>>>
标记出不同分支的内容,此时修改请注意不要误删代码,此时只需要被认为需要留下的即可,修改结果如下:
团队开发中,遵循一个合理、清晰的Git使用流程,是非常重要的。
否则,每个人都提交一堆杂乱无章的commit,项目很快就会变得难以协调和维护。
第六步:推送到远程仓库
提交commit后,就可以推送当前分支到远程仓库了。 $ git push origin xxfeature_20180829
如果本地reset或者合并commit等其他的操作,导致head指向变更,可以在push后加–force强制推送。
第七步:发出Merge Request
登录到code.aliyun.com
发起Merge Request到maindev,然后需要相关人士进行代码review,确认可以合并到maindev。
第八步:上线流程
- 测试环境从
maindev
拉取测试代码; - 预发需要将代码merge到
master
分支,预发与生产环境只允许在master
分支; - 上线完成后以master分支的代码checkout一个
release_vx.x.x
分支(x.x.x相关规则参考自己的项目)。最终将release_vx.x.x
分支分支推送到远端仓库。
第九步:修复线上bug
以master分支代码checkout出hotfix_20180829
,修改代码后参考第六步,第七步,第七步中发起Merge Request到master
。上线完成后将该部分修改代码分别merge到maindev
和相关release_vx.x.x
分支。