我们通过一个简单的例子来初步了解一下git工具使如何帮助团队进行协作开发项目的
团队成员:Tom和Jerry
项目组:MyGroup
项目:MyProject
一,假设现在线上服务器(专业术语是仓库或者repository,如国外的github,国内的“码云”等)有:
1,一个group——MyGroup,
2,MyGroup下面有一个project——MyProject
3,两个branch——master和Tom_dev(master分支中的代码是经过测试和review后的正确代码Tom_dev是开发者Tom自己分支上的代码,Tom_dev分支上的代码是包含master分支代码的,并且会在master分支的基础上进行修改和新增等操作)
二,假定目前项目组只有Tom一个开发者,现在Jerry要加入了,他要进行如下操作:
1,git clone --recursive git@git.company.com:MyGroup/MyProject.git ,将远程项目克隆到本地
2,git mvn package , maven是一个优秀的项目管理工具(参见maven基础知识——包管理),,此条命令对项目编译并运行单元测试,并生成jar包
3,java parameters -jar path_of_jar ,词条命令运行生成的jar包
三,上述三条命令运行成功后,Jerry就要在本机上参与进项目开发了,他要进行如下操作:
1,git branch jerry_dev , 在本地新建一个Jerry自己的分支——jerry_dev
2,git branch,查看当前所在的分支
3,git checkout jerry_dev ,从当前分支切换到jerry_dev的分支上
四,上述三条命令运行成功后,Jerry就要在自己的分支上进行修改或者新增代码的操作了,假如Jerry修改了一下README.md,要将修改进行提交,他要执行以下操作:
1,git status,词条命令查看总体的差异情况,结果有三部分
1)要提交的变更:
(使用 "git reset HEAD <file>..." 撤出暂存区)
2)尚未暂存以备提交的变更:
(使用 "git add <file>..." 更新要提交的内容)
(使用 "git checkout -- <file>..." 丢弃工作区的改动)
修改: README.md
3)未跟踪的文件:
(使用 "git add <file>..." 以包含要提交的内容)
2,git diff README.md,查看README.md文件修改前后的差异
3,git add README.md,将修改后的README.md加入要提交的变更
4,git commit -m "本次提交修改的说明",将Jerry的修改进行提交,并对提交的修改做简单说明
5,git log,查看生成的commit id
6,git push origin jerry_dev,将本地修改push到远程仓库的jerry_dev分支
7,在网页版github上选择“New Merge Request”,然后将各个选项填写一下,记得选择review代码的人,这里Jerry只能选择Tom了,然后“Submit merge request”。Tom review后没问题的话会发一个允许merge的指令给Jerry。指令是自定义的,比如,LGTM。Jerry之后就可以merge自己的修改到master分支,OK,此时Jerry的修改就成功完成了。
五,上述命令成功执行后,现在Tom要将master上面的更新pull到本地,这样才能与Jerry同步协作,Tom执行以下命令:
1,git pull origin master,远程master分支有更新后,此命令将远程更新拉取到本地来
到此为止,我们用一个最简单的例子将git的一个基本过程走了一遍,当然还有许多其他命令未能涉及,但是通过这个小例子,我们可以对git这个团队协作开发工具有一个初步了解,也可以感受到git的方便和强大。