force-test2/git.md

306 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 红山开源平台开源项目使用手册
## 1. 开源项目:项目管理
项目是用户创建的对应于一个小组或团队的协同实践社区,由项目管理员、开发人员和报告人员组成,提供问题跟踪、版本管理、里程碑、代码质量分析、资源托管、交流研讨等功能。
注意:未开展分组作业或项目开发的用户暂不涉及本章内容。
### 1.1 基本操作流程
开源项目是一种协同实践社区,支持团队和小组开展各种协作活动。 开源项目的典型操作流程如下:
1. 项目创建:团队(或小组)的核心成员首先创建一个项目。
2. 成员添加:通知团队其他成员在红山开源平台上注册(如已注册则忽略此步),将团队成员加入项目。
3. 问题跟踪:发布不同类型的问题,指派给责任人,并跟踪问题的解决进度。
4. 版本管理基于Git版本库实现分布式版本控制。
5. 交流互动:基于讨论区等工具开展深度技术交流和研讨。 上述步骤的详细操作参见以下章节。
### 1.2 项目创建
项目包括创建1、创建镜像项目2、创建托管项目3、创建组织。
1、创建镜像项目 点击右上角“⊕”,选择“创建镜像项目”,如下图所示: ![创建镜像项目](./static/img/3266.png) 填写项目基本信息,包括项目拥有者、镜像版本库地址、项目名称、项目简介等信息,并点击“创建项目”如下图所示: ![img](./static/img/3267.png)
2、创建托管项目 点击右上角“⊕”,选择“创建托管项目”,如下图所示: ![img](./static/img/3239.png) 填写项目基本信息,包括项目拥有者、项目名称、项目简介等信息,并点击“创建项目”如下图所示: ![img](./static/img/3240.png)
3、创建组织 点击右上角“⊕”,选择“创建组织”,如下图所示: ![img](./static/img/3241.png) 填写组织基本信息,包括组织名称、组织描述等,选择可见性,并上传头像后,点击“创建组织”如下图所示: ![img](./static/img/3242.png)
### 1.3 项目配置
项目的管理员可以对项目进行多种配置。 可配置的内容主要包括:
1. 项目基本信息:包括项目名称和简介,还包括项目是否公开、是否隐藏项目代码库以及删除项目
2. 成员管理:为项目添加各种角色的成员,点击“成员”标签页
3. 关联组织:将项目关联到相应的组织,点击“组织”标签页
4. 创建里程碑:为项目创建阶段性的产品版本,点击“里程碑”标签页
5. 创建版本库为项目创建版本库Git点击“版本库”标签页
### 1.4 成员管理
项目管理员可以在项目配置中管理项目的成员。
1、点击“仓库设置”进入标签页选择左侧菜单栏的“协作者管理”将看到如下页面 ![img](./static/img/3243.png) 2、在下图所示的搜索框内输入欲添加成员的用户名如下图所示 ![img](./static/img/3244.png) 3、在搜索结果中选择想要添加的成员点击“添加成员”如下图所示 ![img](./static/img/3245.png) 4、成员添加成功后可为其选择角色包括管理员、开发者、报告者三种如下图所示 ![img](./static/img/3246.png) 注意:项目成员的不同角色具有不同权限。 管理员:可以对项目中的所有模块进行操作。 开发者:不能对项目进行配置。 报告者:不能对版本库进行操作。
### 1.5 删除项目
管理员可以删除项目。步骤如下: 点击“仓库设置”,进入标签页,选择左侧菜单栏的“基本设置”,点击下方的“删除本仓库”,即可删除当前项目。 ![img](./static/img/3247.png)
### 1.6 发布问题
1、点击“易修(Issue)”,进入标签页,点击页面右侧的“创建任务”。 ![img](./static/img/3260.png) 2、填写任务标题及内容选择指派成员、状态、类型、优先度等点击“创建”。 ![img](./static/img/3251.png) ![img](./static/img/3252.png) ![img](./static/img/3253.png) ![img](./static/img/3254.png) ![img](./static/img/3255.png) 3、出现如下图所示信息时表明问题发布成功。 ![img](./static/img/3256.png) 4、点击已发布的问题进入问题详情页面点击下图所示的评论区输入栏。 ![img](./static/img/3257.png) 5、点开输入栏后出现下图所示输入界面输入想要评论的内容后点击“评论”。 ![img](./static/img/3258.png) 6、出现如下图所示信息时表明评论成功。 ![img](./static/img/3259.png) 注意: 每个问题都相当于一个可以进度追踪的帖子。因此支持回复、点赞、@等。 在问题截止日期的前一天,系统将对问题的发布人和被指派人发送提示消息。
### 1.7 新建里程碑
管理员可以新建里程碑。步骤如下: 1、点击“里程碑”进入标签页点击页面右侧的“新建里程碑”。 ![img](./static/img/3261.png) 2、填写新里程碑相关信息包括标题、描述等选择截止日期后点击“创建里程碑”。 ![img](./static/img/3262.png) 3、出现如下图所示信息时表明新的里程碑创建成功。 ![img](./static/img/3263.png) 注意:项目成员在发布问题时。将在“目标版本”属性中看到新建的版本。
### 1.8 关联里程碑
项目成员可以将项目问题关联到里程碑,从而使里程碑包含明确的任务列表。 步骤如下: 1、进入某个问题的页面编辑“里程碑”属性从“里程碑”下拉框中选择适当的里程碑点击“提交”。 ![img](./static/img/3264.png) 2、出现如下图所示信息时表明里程碑关联成功。 ![img](./static/img/3265.png)
## 2. 开源项目:组织管理
为了满足团队开发、协作、宣传和管理需要,红山开源提供了组织功能。
### 2.1 组织创建
1. 在用户登录状态下,点击右上角用户头像,选择开源主页。
![img](./static/img/9999.jpg)
2. 进入开源主页后,点击组织按钮
![img.png](./static/img/img.png)
3. 点击新建组织,跳转至新建组织页面并输入组织相关信息,输入完成后点击创建组织进行创建
![img.png](./static/img/9997.png)
![img.png](./static/img/9996.png)
### 2.2 组织页面配置及介绍
在`2.1 组织创建`点击创建组织后,网站将自动跳转至组织页面。
![image-20220805093839705](./static/img/4000.png)
点击组织页面右上角设置按钮进入组织页面配置页面
![image-20220805094357904](./static/img/4001.png)
组织设置共分为四个模块:基本设置、组织首页管理、组织成员管理、组织团队管理
![image-20220805094500603](./static/img/image-20220805094500603.png)
1. 基本设置
在组织配置的基本设置中,可对当前组织的组织名称、组织描述、官方网站、所在地区、可见性、权限、最大仓库数、组织头像(推荐上传正方形图片)进行修改。
其中,组织名称、组织描述、可见性、组织头像为必填项,其余为选填项;用户可根据自身需求进行相关的编辑及修改。
2. 组织首页管理
在组织首页管理当中,主要可对两个部分进行相应配置:新闻动态、组织介绍(均不是必填项,若不填写 组织页面将进行隐藏显示)。
其中新闻动态图片推荐大小为288*120
+ 新闻动态
+ 新闻动态图片 大小288*120
+ 新闻动态原文链接,此处可以填写相应的网站链接。用户点击新闻即可进行跳转
+ 新闻动态标题,此处为新闻的标题信息
+ 新闻动态内容此处为新闻的动态内容最多可输入200字
+ 组织介绍
+ 此处为组织介绍需填写组织的相关信息。支持markdown语法
![image-20220805095532236](./static/img/image-20220805095532236.png)
3. 组织成员管理
组织成员管理页面可查看、添加、删除组织的成员。
+ 点击右上角`添加成员`进行人员添加(需要选择添加人员的组织团队)
![image-20220805101149075](./static/img/image-20220805101149075.png)
选择组织团队之后跳转至人员添加页面,点击右上角搜索框,输入需要添加的用户名对平台用户进行搜索
![image-20220805101655892](./static/img/image-20220805101655892.png)
点击对应用户,点击右侧按钮`添加成员`进行人员添加。
4. 组织团队管理
## 3. 开源项目:版本管理
版本管理又称版本控制,是一种分布式协同编程的重要工具。没有掌握好版本管理工具,团队式协同开发是不可想象的。
红山开源平台集成了Gitlab版本管理系统可以提供标准的Git版本库操作流程。 因此在使用本平台提供的Git仓库时。可以直接参考本手册。也可以在互联网中搜索相关问题的解决方法。 详见Git使用指南https://git-scm.com/book/zh/v2
注意:未开展项目开发的用户暂不涉及本章内容。
### 3.1 基本操作流程
Git版本库的使用非常灵活功能非常强大但其基本流程也是非常简单的
1. 在平台上新建远程版本库或fork一个远程版本库
2. 将远程库clone到本地
3. 在本地库中创建分支缺省为master
4. 提交commit代码到本地分支
5. 推送push代码到远程库的分支/下拉pull远程库的代码到本地
6. 解决冲突
7. 合并分支
以上是一个在实际操作中反复进行的基本流程。
注意: 在多人协同编程的情况下每个成员在开发自己的模块时尽可能先从master或developer分支下载最新代码并与本地分支合并否则时间久了合并分支将是一个灾难。 上连基本流程可以使用Git命令行客户端、Tortoise Git客户端等工具完成。
### 3.2 fork版本库
用户对某一个版本库的fork操作将会为该用户创建一个同名项目和同名版本库。
操作步骤进入需要fork的版本库页面点击右上角的Fork按钮即可。
注意: 任何用户都可以fork一个公开的版本库。 连续两次fork同一版本时系统将直接跳转到第一次fork后的版本库。
### 3.3 新建版本库
管理员可以新建版本库。步骤如下:
1. 进入相应的开源项目的“项目配置”页面
2. 点击“版本库”标签页,点击“新建版本库”链接
3. 填写版本库名称后,点击“创建”
注意: 同一用户名下的版本不能重名。 平台也将在近期提供SSH访问方式。
### 3.4 克隆版本库(clone)
克隆版本库是将开源项目的版本库完整的克隆到本地的过程。其中包括了版本库的所有提交记录。步骤如下:
1. 确定需要克隆的版本库地址:从项目的版本库页面中即可找到该地址
2. 在本地的git命令行执行
```bash
git clone https://git.osredm.com/xxx/yyy.git
```
其中“https:// git.osredm.com /xxx/yyy.git”是版本库的地址xxx为用户IDyyy为项目名称
3. 如果项目是私有的,根据提示输入版本库用户名和密码,输入当前用户的红山开源平台登录名和密码即可
注意:如果项目公开, 无需输入口令, 可以直接克隆。 对于私有项目,只有项目成员才具有克隆的权限。
### 3.5 新建分支、切换分支
+ 新建分支
新建分支是指在本地库创建一个新的分支(用于开发新的功能),并且将其同步到远程库。主要步骤如下:
1. 从已有的分支创建新的分支如从master分支例如创建一个dev分支 `git checkout -b dev`
2. 创建后可以查看一下当前分支确认当前分支已经切换到dev `git branch dev master`
3. 提交该新的分支到远程仓库: `git push origin dev:devl`
其中: dev为本地新建分支:devl为远程分支如果devl不存在则会自动创建分支。这里dev应该等于devl。
+ 切换分支
切换分支是指将当前工作分支换为另一个分支 。假设本地仓库有master和dev两个分支当前分支是master其实也可以是其他分支。那么切换到dev分支的命令是 `git checkout dev`
注意用户可以使用git branch命令确认当的分支是否已经切换到dev
### 3.6 提交代码(commit)
项目成员在本地编辑代码或修改文件后,可以将新修改的文件提交到本地库:
1. 将新修改的所有文件添加到本地版本库的暂存区stage `git add .`
注意:如果仅添加单个文件,或一类文件,可以: `git add somefile.txt #添加单个文件`
2. 将提交到暂存区的修改提交到本地的当前分支: `git commit -m “myfirstcommit”`
其中“mycommit”中的内容是关于本次提交的说明文字。
注意commit只能将修改的文件提交到本地库与远程库没有关系。
### 3.7 推送代码(push)
项目成员可以将本地提交后的改动,推送到远程库。
假设用户需要将本地库的dev分支推送至远程库的dev分支执行 `git push -u origin dev `
如果用户的当前的本地分支己经是dev, 那么执行: `git push`
如果用户需要将本地的全部分支推送到远程库。那么执行: `git push -all origin`
注意: push代码时会提示输入用户密码请输入红山开源平台登录名和密码即可。 Push代码之前通常要先pull解决冲突后才能提交否则不是最新的文件就提交不上去。
### 3.8 下拉代码(pull)
下拉代码是指从远程版本库获取代码文件到本地分支。
例如用户希望将远程版本库的devl分支下拉到本地的dev分支需要执行 `git pull origin dev devl`
注意下拉代码时可能会出现冲突即两个分支对同一个文件的同一行代码做了不同的修改。此时常利用merge来解决冲突。
### 3.9 合并分支(merge)
合并分支是指将一个分支合并到当前分支。通常有两种情况:
1. 将一个本地分支合并到当前分支:
例如假设用户希望将本地库的devl分支合并到当前分支dev ,命令如下: `git merge dev1`
2. 将一个远程库的分支合并到当前分支:
例如假设用户希望将远程库的devl分支合并到当前分支dev,有多种方法,这里仅给出最基本的:
```bash
git checkout -b temp #新建一个临时分支temp
git pull origin dev1:temp #将远程devl分支下拉到temp分支
git checkout dev #切换到本地dev分支
git merge temp #合并分支(可能 产生冲突合并完成后应删除temp分支)
```
注意:合并分支可能会出现冲突(即两个分支对同一个文件的同一行代码做了不同的修改)。
### 3.10 解决冲突
冲突是两次不同的提交修改了同一行代码导致的,通常表现为两个分支对同一行代码做了不同的修改。 版本冲突主要出现在以下两种情况:
第一种情况在对远程版本库进行pull操作时。
第二种情况对本地版本库的不同分支进行merge操作时。
解决冲突的主要方法有两种:
1. 对于简单的冲突,直接修改有冲突的文件,然后重新提交即可
2. 对于复杂的冲突,需要用**git merge tool**来解决。 复杂的冲突解决方法(基于git merge tool)将在近期提供给大家
### 3.11 常见错误
新手在使用Git时经常遇到各种错误由于平台集成的是标准Git服务(Gitlab),建议大家可以直接在互联网搜索疑难问题的解决办法。 或参考Git使用手册 https://git-scm.com/book/zh/v2 为给大家提供方便,这里先列出一种最常见的错误:
错误1:
```bash
fatal:The remote end hung up unexpectedly
```
Windows环境解决方法在.git/config文件中加入 `[http] postBuffer = 524288000`
Linux环境解决方法在命令行执行 `git config http.postBuffer 524288000`
注:后续我们将列出更多的错误解决办法。