下载Git

  1. 点击进入官方网站 https://git-scm.com/

  2. 跳转之后的页面稍等几秒后自动下载.exe可执行文件

  3. 点击默认安装即可(所有均默认)

下载&安装SourceTree

SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端管理工具,同时也是Mercurial和Subversion版本控制系统工具。支持创建、克隆、提交、push、pull 和合并等操作。

下载及安装需要注册Atlassian帐号,并使用全局代理进行登录(只需登录一次授权本地).

下面直接讲解SourceTree 配置SSH 密钥 & 连接公司GitLab流程

使用SourceTree生成SSH 密钥

  1. 打开SourceTree - > 命令行模式(或者打开GitBash也可以)
  2. 输入cat ~/.ssh/id_rsa.pub查看当前环境中是否已经存在ssh key. 如果存在直接跳到.

如果显示cat: /c/Users/userName/.ssh/id_rsa.pub: No such file or directory
则表示当前环境没有ssh密钥.
3. 创建 SSH 密钥. bash中输入

1
ssh-keygen -t rsa -C "GitLab" -b 4096

三个回车默认,最终显示下图,表示创建成功.

  1. 再查看当前SSH 密钥.同第二步 cat ~/.ssh/id_rsa.pub 并复制

  1. 进入到GitLab个人设置中,将SSH 公钥添加即可

Clone项目到本地

复制SSH地址

粘贴到URL

克隆本地成功

GitLab 管理员权限设置

GitLab后台管理员使用权限一般为公司内部负责人、主管等人开放。负责对团队新进员工开放帐号、创建组、创建项目以及设置权限等操作。

添加新用户

  1. 进入管理员后台 -> 新建用户

  2. 配置个人信息,一般只填写 Account项即可.

  3. 点击创建用户即可. 被创建的用户邮箱则会收到一封创建密码并激活账户的邮件.

设置完成后即可使用设置的邮箱地址或者用户名登录

创建组

对于管理员权限,则拥有创建组的权限.GitLab中的组代表一合作团队,组内的人可以拥有组中项目的浏览、拉取、提交等权限。我们规定所有公司项目必须在组中创建.

  1. 如没有项目挂载在账户中时,默认界面即显示创建组按钮.如果显示当前项目,则可以点击管理后台进行组创建的操作

  1. 填写组设置

点击创建组即可完成.

  1. 添加成员到组
    组创建完成后,即可添加成员到组中.
    进入组首页 - > 成员(Members) 选项卡

搜索、设置成员权限、添加成员

对于成员权限,可参照 帮助 -> 权限页面 [help/user/permissions]

创建项目

进入项目对应的Group 组 主页 - > 新建项目 New Project

填写项目信息

设置项目提交邮件通知

项目主页 -> 设置 - > 集成设置

保存设置后即开启提交邮件通知服务.

Git开发流程

根据上面的设置,我们已经成功的将TestProject 仓库项目 Clone 到本地.现在我们将使用该测试项目模拟GitFlow开发流程.
这里我们将模拟两个权限不同的账户,一个名为Administrator 的 Project Master账户;一个名为VincentShin的 Project Developer 账户.

模拟分支的创建及获取&检出到本地分支

  1. Administrator(Project Master)基于master创建Develop开发分支

  2. Administrator(Project Master)将本地分支推送到远端(push 当前分支到 Remote)

    注意: 在开发中,push 的动作必须要先将本地更改进行提交(commit),然后再将 remote 的状态拉取到本地(pull),并解决问题后才可以进行Push操作. 否则 SourceTree(Git) 会报错.

  3. VincentShin(Develop)账户邮箱收到Git 分支推送邮件提醒.

  4. VincentShin(Develop) 将远端分支拉取到本地

分支拉取成功

模拟功能开发、创建本地新分支及本地提交

  1. VincentShin(Develop)进行功能A开发,需基于当前的Develop创建新的功能A分支,并修、增加代码(为了方便管理以及分组显示,可以将功能A分支命名为feature/A,这样在SourceTree中将以分支树的形式显示)

分支创建成功

将本地更改进行提交

本地提交成功

模拟本地分支合并、推送远端分支

  1. Administrator(Project Master) 进行功能B的开发,并完成了功能B的开发,需要将功能B的代码合并到Develop分支中,并更新到远端.

将当前FeatureB分支合并到Develop分支中

现在我们切换到Develop分支中是看不到FeatureB.txt这个文件的.需要将FeatureB分支上的变更合并到Develop分支上来.

这时,develop分支显示超前一个版本

从远端拉取Develop分支,并查看是否存在冲突. 如无冲突,则点击推送,将当前的develop分支的内容推送到远端.

推送

推送成功

再次强调推送到远端的流程: 1.本地提交/合并 -> 2.拉取远端分支状态 - > 3. 如有冲突则解决冲突 - > 4. 解决冲突完成,标记为已解决并在本地提交解决状态 - >5. Push 推送本地状态到远端
3 ~ 4步下面流程将会讲解.

模拟远端分支更新拉取,并合并至本地分支

  1. VincentShin(Project Develop) 接收到 develop分支变更邮件,从远端更新develop分支,并将变更的内容合并到本地正在开发的FeatureA分支.

注意:VincentShin还在功能开发中,这时不要着急将代码提交,应将功能完成后,再进行一次本地提交.

完成了一个提交点之后方可提交

切换到develop分支下,并进行远端代码拉取.

注意:同样,如果有冲突,则在这个时候进行冲突的解决,并进行本地提交.

切换回当前Feature/A分支下,并将develop分支下的代码合并至当前分支,完成代码的同步更新.

这时,我们观察文件状态,Feature/A分支中,已经将远端的develop分支的内容更新过来了.

模拟冲突解决

  1. Administrator(Project Master)将README文件进行更改,并提交到远端develop分支.

合并,并推送

  1. VincentShin(Project Developer) 在开发功能A时也对ReadMe进行了修改,并当前也完成了功能A的开发.现需要将本地分支合并到develop分支上,并推送到远端.

切换到develop分支,并将feature/A分支的代码合并到当前分支.

拉取远端代码发现远端文件同本地文件冲突.

解决冲突,右击冲突文件- > 解决冲突.

SourceTree提供了三种解决冲突的方案:即”使用我的版本”、”使用他人版本”、”打开外部合并工具”(需第三方软件支持)

这里我们为了方便,使用手动解决冲突(IDE中也有对应的解决冲突的工具)

解决冲突

再进行一次本地提交

推送分支

推送成功

打Release分支

当前版本的功能已经开发完成,现在需要进行发版前的回归测试阶段.该阶段需要基于develop另外打出一个新的Release分支,服务于接下来的Bug修复等工作.
注意:当创建Release分支后,禁止一切对远端Develop分支的修改!!!(等同于不接受任何功能性开发)

  1. Administrator(Project Master) 获取当前develope分支最新的代码,在本地基于最新的develop分支创建Release分支,并推送到远端.

本地创建Release分支,并将分支推送到Remote

  1. VincentShin(Project Developer) 获取分支,并在本地创建新分支,修复Bug后合并到release分支并推送.

发布 & 合并Master

  1. 此时测试通过,需进行打包发版.
    Administrator(Project Master)
  • 需对当前Release分支的代码发送合并请求到Master分支上,在Master分支上提交tag,标记当前Release版本号.

Administrator(Project Master) 发送master分支合并请求(GitLab中).

发送合并请求可以开发者发起,也可以管理员发起.但是同意合并的权限需管理员进行操作.


在SourceTree中查看master分支结果(获取)

版本上线后的后续操作

拉取master的最新代码,合并到Develop分支中,并提交到远端.开启下一个版本的开发(继续进行本地Feature分支的开发).