Commit 6be3ec99 by 罗绍泽

feat: 代码初始化

parents
@[TOC](目录)
# 杰夫GitLab使用手册
你好! 这是关于 **杰夫GitLab** 的简要使用说明。内容主要包括客户端环境的搭建,项目的新建,代码的提交,冲突的解决等方面。
首先,Git是一个分布式代码管理软件,在查看本文档之前,建议读者先去了解一下Git的基本知识(基本指令+工作原理),在本文中不会解释任何Git的基本术语。
## 客户端环境的搭建
客户端主要分为两种,**命令式****图形用户界面(GUI)**
其中,GUI依赖命令式的客户端。
> 例如,下面所要安装的Sourcetree,你可以选择自己安装的命令式客户端作为内核,也可以使用他自带的内置git命令行客户端作为内核。 <br/>
笔者在这里强烈建议使用自己安装的命令式客户端。这样以后在没有打开Sourcetree的情况下,你也可以很轻松的在命令式客户端做一些简单的操作(例如git clone这些基本的操作,如果要打开GUI会显得很累赘)。
### 命令式客户端的安装
客户端下载地址:https://git-scm.com
> 由于天朝的限制,也可以直接使用附件1
安装方式不做过多赘述,一般按照默认安装即可。
安装完,可以在开始菜单中找到Git Bash。打开Git Bash可以看到类似cmd命令的一个dos窗口。在这里面你可以执行所有的git命令,无需在环境变量中额外配置。
![avatar](/img/1.png)
![avatar](/img/2.png)
### GUI客户端的安装
这里推荐的GUI工具为Sourcetree。
官方下载地址:https://www.sourcetreeapp.com
> 可以直接使用附件 2.1 或者 2.2
安装方式同样非常简单,但是需要注意的是,Sourcetree安装过程中会出现一个谷歌账号的验证界面,如下图所示:
![avatar](/img/3.png)
因为天朝的关系,如果你不FQ,是无法进行认证的。
所以当遇到账号验证界面时:
1. 请关闭安装程序。
2. 在资源管理器的地址栏输入:%LocalAppData%\Atlassian\SourceTree\
3.**附件3文件夹内****文件** 拷贝至上述目录
4. 重新执行SourceTree安装程序就可以顺利执行。
> 注意:3.0.8以上的普通用户版account.json跳过登陆注册方法已失效,请安装企业版。例如附件2.2就是企业版的SourceTree。
## 新项目的创建
创建项目,有以下几个主要步骤:
1. 在公司GitLab上新建项目空间
2. 项目成员设置(权限设置)
2. 将本地项目初始化为git工程
3. 将本地项目上传至公司GitLab
>公司GitLab访问地址:http://git.jfbrother.com<br/><br/>
用户名,一般为姓全拼+名首字母,如王小明,用户名为wangxm。<br/><br/>
密码,默认为12345678<br/><br/>
*这里笔者还是建议,统一使用root进行项目创建,为了方便管理。但是考虑到root账号比较敏感,建议专门人士负责项目的创建。*
### GitLab中 **组** 和 **项目** 的概念
组:相当于资源管理器中的文件夹,组中可以有组和项目
项目:相当于资源管理器中的文件
那么,什么时候需要使用组呢?
> 一般来讲,可以使用框架名称,建立一个组,里面建立工程。表示这些工程都属于该框架。例如:可以建立名称为【jfV5】的Group,里面建立名称为【ndxgxt】宁大学工系统的工程。
> 如果一个项目有多个子项目构成,也可以使用Group的概念。例如可以创建【ndxgxt】的Group,里面创建名称为【Mobile】和【PC】的工程名称。表示Mobile和PC属于ndxgxt的子工程。
这样的结构,有助于项目的管理。
### 实际演练
下面使用一个真实的项目,演示下如何创建一个新的项目,并将代码提交到GitLab中。
#### 登录GitLab
#### 创建Group
如下图,点击New group
![avatar](/img/4.png)
填写组的信息并保存。
![avatar](/img/5.png)
#### 创建Project
在刚刚新建的 Group 的主界面,点击New Project
![avatar](/img/6.png)
在出现的信息框中填写项目信息,填写完后,点击保存。
![avatar](/img/7.png)
#### 添加项目成员
点击左侧导航的settings->members
![avatar](/img/8.png)
选择人员,和设置人员权限为Develop。
> 如果是用Root账号创建的,请暂时将自己的账号设置为Master.
点击Add to project
![avatar](/img/9.png)
添加后的效果如下图所示
![avatar](/img/10.png)
#### 将本地项目初始化为Git项目
使用Git Bash工具,进入项目根目录,执行以下命令:
```
$> git init
```
可以看到在项目根目录生成了一个.git的隐藏文件夹,这是git项目的标志。
#### 将git项目加入SourceTree
点击SourceTree的页签上的加号
直接将文件夹拖入SourceTree即可
![avatar](/img/11.png)
双击刚刚拖入的工程,可以打开git 工程页面的详情。
![avatar](/img/12.png)
#### git源的设置
点击工程页面右上角的远端,在下面的弹出框中点击添加
![avatar](/img/13.png)
填写项目的git信息,其中URL为GitLab上的Http协议地址,填写完后点击确定保存源。
![avatar](/img/14.png)
#### 将未暂存区的文件加入暂存区
可以拖拽,也可以点击未暂存区右上角的按钮进行add操作。
> 如果是非maven工程,请将IDE的配置文件夹也加入暂存区,点击暂存所有即可。由于有jar包的存在,第一次add操作可能会耗时比较久。<br /><br />如果是maven工程,请将IDE的配置文件进行忽略操作。在需要忽略的文件右键,可以看到忽略按钮,点击以后可以根据完整的文件名,或者通配符等规则创建忽略规则。<br /><br />
> 一般来讲,可以在项目根目录中创建一个README.md文件,该文件会在GitLab的项目中作为首屏信息展示。
#### 暂存区代码的提交
在提交代码区的文本框中写入备注信息,点击提交按钮即可。
> 当第一次执行提交的时候,本地git会自动为当前代码创建master分支
![avatar](/img/18.png)
![avatar](/img/19.png)
#### 关于 commit 提交规范 & 规范校验
Commit message格式
> <font color=#c7254e>\<type\></font> : <font color=#c7254e>\<subject\></font>
type
用于说明 commit 的类别,只允许使用下面7个标识。
+ feat : 新功能(feature)
+ fix : 修补bug
+ docs : 文档(documentation)
+ style : 格式(不影响代码运行的变动)
+ refactor : 重构(即不是新增功能,也不是修改bug的代码变动)
+ test : 增加测试
+ chore : 构建过程或辅助工具的变动
> 如果type为feat和fix,则该 commit 将肯定出现在 Change log 之中。
subject
subject是 commit 目的的简短描述,不超过50个字符,且结尾不加句号(.)。
#### Push到GitLab
点击左上角的推送按钮,打开推送界面
![avatar](/img/15.png)
![avatar](/img/19.png)
刷新GitLab上的工程可以看到代码已成功提交
![avatar](/img/20.png)
#### 在GitLab上创建develop分支
进入分支管理界面
![avatar](/img/21.png)
点击New branch
填写Branch name为develop
最后点击Create branch,完成创建。
![avatar](/img/22.png)
#### 在SourceTree中,更新源
点击获取,更新源
![avatar](/img/16.png)
更新后可以在左侧远程的源中看到最新的develop分支
![avatar](/img/23.png)
#### 拉取远程的develop分支
右键点击develop分支,选择检出
![avatar](/img/24.png)
直接点击确定即可
![avatar](/img/25.png)
可以看到本地分支已经切换到了develop
![avatar](/img/26.png)
## 代码的提交
其实,在前面项目的新建中,已经涉及到了部分代码提交的知识。
这里再以新增一个README.md文件做示例,演示代码如何提交。
### 在项目中创建一个README.md文件
创建一个普通的文本文档,将其改名为README.md
![avatar](/img/27.png)
### 在md文件中,书写一些信息,并保存
![avatar](/img/28.png)
可以在SourceTree中看到新增了该文件
> 如果你在右侧预览视图中看到了乱码,应该是文件编码设置错误导致的,请使用UTF-8编码
如下图所示的编号顺序,进行操作,便可提交代码
![avatar](/img/29.png)
![avatar](/img/30.png)
### 在GitLab中查看提交结果
> 注意,在develop分支中查看
![avatar](/img/31.png)
## 冲突的解决
当两个人同时修改一个文件的时候会发生冲突
正规的代码提交流程如下
**提交->获取->合并->冲突解决->推送**
手动将<<<<<<< HEAD【内容A】=======【内容B>>>>>>> 9d052eac234b0eafd79233cea62b6db06a2f6086的内容做合并,然后解决冲突标记为已解决
如果严格使用上述流程合并,则内容A为本地记录,内容B为线上最新版本记录。
> 还有一种合并方案,<br /><br />
获取->贮藏->合并->应用贮藏->冲突解决-提交-推送<br /><br />
但是不推荐,以后很难追朔具体的合并信息。
## git的代码分布简介
## git的代码分布简介
> --XXX--> 为git操作
**工作空间(实际改代码的地方,也称未暂存区)**
--add-->
**暂存区**
--commit-->
**本地仓库**
--push-->
**远程仓库**
暂存区的概念:主要是为了告诉git,哪些文件需要commit而已
Git各层次示意图
![avatar](/img/git.jpg)
img/1.png

8.57 KB

img/10.png

38.2 KB

img/11.png

58.4 KB

img/12.png

59.2 KB

img/13.png

14.9 KB

img/14.png

15.6 KB

img/15.png

49.6 KB

img/16.png

50.1 KB

img/17.png

10.8 KB

img/18.png

97.6 KB

img/2.png

4.69 KB

img/20.png

48.6 KB

img/21.png

78.9 KB

img/22.png

9.88 KB

img/23.png

17.5 KB

img/24.png

17.6 KB

img/25.png

14.3 KB

img/26.png

20.4 KB

img/27.png

73.6 KB

img/28.png

8.93 KB

img/29.png

70.5 KB

img/3.png

30.1 KB

img/30.png

33.1 KB

img/31.png

35.5 KB

img/4.png

19.9 KB

img/5.png

17.6 KB

img/6.png

26.8 KB

img/7.png

22.2 KB

img/8.png

40.9 KB

img/9.png

7.74 KB

img/git.jpg

24.1 KB

[
[
{
"$id": "1",
"$type": "SourceTree.Api.Host.Identity.Model.IdentityAccount, SourceTree.Api.Host.Identity",
"Authenticate": true,
"HostInstance": {
"$id": "2",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountInstance, SourceTree.Host.AtlassianAccount",
"Host": {
"$id": "3",
"$type": "SourceTree.Host.Atlassianaccount.AtlassianAccountHost, SourceTree.Host.AtlassianAccount",
"Id": "atlassian account"
},
"BaseUrl": "https://id.atlassian.com/"
},
"Credentials": {
"$id": "4",
"$type": "SourceTree.Model.BasicAuthCredentials, SourceTree.Api.Account",
"Username": "",
"Email": null
},
"IsDefault": false
}
]
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment