# 水杉码园教师使用手册（详细版）

[toc]

## 一、课程管理

### 1.1 课程创建

课程创建前需要登录教师账号，URL：http://gitea.shuishan.net.cn/

在首页中选择“课程”点击下方“+”号，或单击左上角头像处在下拉菜单中选择“ + 创建课程”进行课程创建。

![微信截图_20211013183551](image/微信截图_20211013183551.png)

页面跳转至“创建课程页”，按提示填写相关信息，单击“创建课程”完成课程创建。

注意：作业最大次数默认为10次，教师可根据开课过程中布置的作业次数设置该值，因创建课程后该值不可修改，建议设置作业最大次数略大于实际作业次数。

![微信截图_20211013211620](image/微信截图_20211013211620.png)

可单击跳转页面右上角的“访问”按钮进入课程主页。

![微信截图_20211013211842](image/微信截图_20211013211842.png)

也可以通过首页的课程模块访问相关课程。

![微信截图_20211013211912](image/微信截图_20211013211912.png)

进入课程显示如下页面。

![微信截图_20211013211932](image/微信截图_20211013211932.png)

### 1.2 成员管理

课程成员包括课程教师、助教、全体选课学生。

#### 1.2.1 添加助教

在课程首页的右侧有课程团队模块（课程团队相关概念及操作在1.3节团队管理中进行详细说明），单击"Owners"，进入“Owners”团队管理页，在搜索框中搜索助教人员相关信息，单击“添加团队成员”即可完成助教添加。助教在本课程中拥有和教师相同的操作权限。

![微信截图_20211013212348](image/微信截图_20211013212348.png)

![微信截图_20211013212436](image/微信截图_20211013212436.png)

在上述页面中，单击“移除成员”可以移除相关助教。

![微信截图_20211015092302](image/微信截图_20211015092302.png)

#### 1.2.2 批量导入学生

单击课程首页的“导入学生”按钮，进入学生批量导入的页面。

![微信截图_20211013212737](image/微信截图_20211013212737.png)

课程学生以excel表的方式进行导入，excel表格有固定的格式，excel表格模板可以单击“模板下载”按钮下载查看。

单击“选择文件”上传学生信息的excel表格，单击“导入学生”。

![微信截图_20211013212932](image/微信截图_20211013212932.png)

导入学生信息的处理时间较长，教师可选择等待，也可以选择返回课程首页，系统后台依然会进行导入学生的操作。

导入学生成功后会显示成功导入学生的信息。

![微信截图_20211013213040](image/微信截图_20211013213040.png)

由于学生未在系统中注册等原因，部分学生可能会导入失败，教师会收到导入学生是否成功的相关邮件（可能需要等待较长时间），如有部分学生未导入成功，在邮件中会列出相关学生的信息。

教师可在课程首页单击“管理成员”，详细核对课程中已经导入的学生信息。

重复导入学生不会对课程中已经存在的学生造成影响。

![微信截图_20211013213138](image/微信截图_20211013213138.png)

添加学生后，系统会为每位学生创建以学生学号命名的仓库，该仓库对学生本人和课程教师及助教可见。

完成导入学生操作后，系统会自动创建“AllStuRead”和“AllStuWrite”仓库，这两个仓库对所有课程成员可见。学生对“AllStuRead”仓库只有可读权限，可在该仓库中存放课程资料，发布课程作业。学生对“AllStuWrite”仓库具有可写权限，可在此发布协作任务等。

![微信截图_20211013213239](image/微信截图_20211013213239.png)

#### 1.2.3 逐个添加学生

在课程首页单击“添加学生”按钮，在搜索框中输入学生相关信息（学号或姓名）找到该学生，单击“添加团队成员”完成单个学生的添加。

注意：使用逐个添加学生功能，系统不会自动创建“AllStuRead”和“AllStuWrite”仓库，一般建议使用批量导入学生功能添加学生。

![微信截图_20211015093132](image/微信截图_20211015093132.png)

![微信截图_20211015093159](image/微信截图_20211015093159.png)

#### 1.2.4 课程成员移除

随着课程的进行，一些课程成员可能会离开课程。

在课程首页单击“管理成员”，页面跳转后在左侧可勾选需要删除的课程成员，单击右上角的“批量移除成员”按钮可以移除选中的课程成员。

![微信截图_20211013213138](image/微信截图_20211013213138.png)

![微信截图_20211015160914](image/微信截图_20211015160914.png)

### 1.3 团队管理

在课程首页的右侧有课程团队模块，“Owners”团队为课程创建完成后系统自动创建的团队，“Owners”团队中的成员包括课程教师和助教，对课程拥有管理员权限，“AllStuRead”和“AllStuWrite”团队为系统导入学生后自动创建的团队，这两个团队中的成员包括所有学生，对“AllStuRead”仓库中的内容具有可读权限，对“AllStuWrite”仓库中的内容具有可写权限（仓库相关内容将在“二 仓库”章节中详细说明）。

#### 1.3.1 新建团队

鉴于课程教学过程中分组合作的需要，系统中可以通过新建团队的方式将指定的数个课程成员组合在一起。

可点击课程团队模块中的“新建团队"直接创建。也可单击课程首页“管理团队”，页面跳转后单击右上角“新建团队”。按提示完成相关信息填写后即可完成团队创建。

![微信截图_20211015161348](image/微信截图_20211015161348.png)

![微信截图_20211015162900](image/微信截图_20211015162900.png)

![微信截图_20211015163223](image/微信截图_20211015163223.png)

在团队管理页中可以搜索相关成员信息并单击“添加团队成员”将其加入团队，若需将自己加入该团队，可以单击左侧“加入团队”的蓝色按钮。

![微信截图_20211015163856](image/微信截图_20211015163856.png)

#### 1.3.2 批量新建团队

课程首页单击“管理团队”，页面跳转后单击右上角的“新建多团队”。

![微信截图_20211015162900](image/微信截图_20211015162900.png)

新建多团队以excel表格的形式导入团队信息，单击“模板下载”可以下载多团队信息填写的模板excel，按要求完成相关信息的填写，单击“选择文件”上传excel，单击“创建团队”，完成多团队的创建。

![微信截图_20211015180120](image/微信截图_20211015180120.png)

![微信截图_20211015180424](image/微信截图_20211015180424.png)

单击“创建团队”后，多团队的创建过程可能较慢，可以单击“立即返回课程首页”，系统后台会完成多团队创建的相关工作。

导入成功后结果如下。

![微信截图_20211015180532](image/微信截图_20211015180532.png)

### 1.4 课程设置

在课程首页单击“课程管理”，页面跳转后可以对课程的相关详细进行更新。

![微信截图_20211022161527](image/微信截图_20211022161527.png)

![微信截图_20211022161630](image/微信截图_20211022161630.png)

### 1.5 课程删除

在课程首页单击“课程管理”，页面跳转后单击左侧导航栏中的“删除课程”，可以进行课程删除操作。

![微信截图_20211022161709](image/微信截图_20211022161709.png)

### 1.6 课程资料上传

在上传课程资料前必须先批量导入学生（参考1.2.2节说明），导入学生后系统自动创建“AllStuRead”仓库。

资料上传使用“AllStuRead”仓库，该仓库对所有课程成员可见，对非课程成员不可见。

![微信截图_20211013214312](image/微信截图_20211013214312.png)

单击“AllStuRead”进入该仓库，可以通过新建文件夹、上传文件等功能上传课程资料。其中，上传文件功能可以同时上传多个文件。

![微信截图_20211013214526](image/微信截图_20211013214526.png)

仓库中有“话题”模块，教师可以通过“创建话题”的方式对上传资料的进行说明，也可以通过“创建话题”的方式发布通知、作业、上传作业相关附件。

![image-20210311201629803](image/image-20210311201629803.png)

![image-20210311202032777](image/image-20210311202032777.png)

同学们也可以在话题中跟帖讨论。

![image-20210311202348583](image/image-20210311202348583.png)
## 二、仓库管理

在课程首页的左下位置展示了课程相关的全部仓库，每个课程成员在导入时默认创建以该成员用户名命名的仓库，课程团队在批量创建也默认创建以团队名命名的仓库，课程中还可以根据需要创建仓库。

![微信截图_20211022164140](image/微信截图_20211022164140.png)

### 2.1 仓库创建

课程首页单击“创建仓库”进入创建仓库页，按提示填写信息，单击“创建仓库”完成仓库创建。

![微信截图_20211022164212](image/微信截图_20211022164212.png)

![微信截图_20211022164459](image/微信截图_20211022164459.png)

### 2.2 仓库删除

在课程首页的左下方的仓库名左侧有勾选框显示，勾选一个或多个仓库，单击右上角的“移除选中的仓库”按钮，可以删除一个或多个仓库。

![微信截图_20211022164414](image/微信截图_20211022164414.png)

### 2.3 仓库使用

在课程首页单击任一仓库名，进入该仓库，可以使用git完成仓库的操作（git使用说明在2.4节中），也可以使用可视化完成新建文件、新建文件夹、上传文件、删除文件夹等操作。

![微信截图_20211022164739](image/微信截图_20211022164739.png)

单击某一文件（如上图蓝色显示README.md处），进入该文件详情页，可以对文件进行文件下载、文件修改、文件删除等操作。

![微信截图_20211022165426](image/微信截图_20211022165426.png)

### 2.4 Git使用

#### 2.4.1 Git简介

1、Git是什么？

Git是一个版本控制系统工具，它可以帮你管理项目，记录每一次提交的变化，以方便你在发生错误时进行回滚。它几乎所有的控制操作都可以在本地执行，不需要网络开销的好处是Git的操作十分迅速。

2、安装Git
访问 https://git-scm.com/downloads ，下载合适的安装包进行安装。

3、详细Git教程

https://www.liaoxuefeng.com/wiki/896043488029600/

#### 2.4.2 常用Git命令

- **新建代码库**

```shell
# 在当前目录新建一个Git代码库
$ git init

# 新建一个目录，将其初始化为Git代码库
$ git init [project-name]

# 下载一个项目和它的整个代码历史
$ git clone [url]
```

- **配置**

```shell
# 显示当前的Git配置
$ git config --list

# 编辑Git配置文件
$ git config -e [--global]

# 设置提交代码时的用户信息
$ git config [--global] user.name "[name]"
$ git config [--global] user.email "[email address]"
```

- **增加/删除文件**

```shell
# 添加指定文件到暂存区
$ git add [file1] [file2] ...

# 添加指定目录到暂存区，包括子目录
$ git add [dir]

# 添加当前目录的所有文件到暂存区
$ git add .

# 添加每个变化前，都会要求确认
# 对于同一个文件的多处变化，可以实现分次提交
$ git add -p

# 删除工作区文件，并且将这次删除放入暂存区
$ git rm [file1] [file2] ...

# 停止追踪指定文件，但该文件会保留在工作区
$ git rm --cached [file]

# 改名文件，并且将这个改名放入暂存区
$ git mv [file-original] [file-renamed]
```

- **代码提交**

```shell
# 提交暂存区到仓库区
$ git commit -m [message]

# 提交暂存区的指定文件到仓库区
$ git commit [file1] [file2] ... -m [message]
```

- **分支**

```shell
# 列出所有本地分支
$ git branch

# 列出所有远程分支
$ git branch -r

# 列出所有本地分支和远程分支
$ git branch -a

# 新建一个分支，但依然停留在当前分支
$ git branch [branch-name]

# 新建一个分支，并切换到该分支
$ git checkout -b [branch]

# 切换到指定分支，并更新工作区
$ git checkout [branch-name]

# 建立追踪关系，在现有分支与指定的远程分支之间
$ git branch --set-upstream [branch] [remote-branch]

# 合并指定分支到当前分支
$ git merge [branch]
```

- **远程同步**

```shell
# 下载远程仓库的所有变动
$ git fetch [remote]

# 显示所有远程仓库
$ git remote -v

# 显示某个远程仓库的信息
$ git remote show [remote]

# 增加一个新的远程仓库，并命名
$ git remote add [shortname] [url]

# 取回远程仓库的变化，并与本地分支合并
$ git pull [remote] [branch]

# 上传本地指定分支到远程仓库
$ git push [remote] [branch]

# 强行推送当前分支到远程仓库，即使有冲突
$ git push [remote] --force

# 推送所有分支到远程仓库
$ git push [remote] --all
```

## 三、作业管理

课程学生将作业提交到以各自学号命名的仓库中，根据作业次序的不同，需提交到不同仓库分支。

例如第一次作业统一提交到各自学号命名的仓库中的homework01分支中。

![微信截图_20211014084022](image/微信截图_20211014084022.png)

课程管理员可以在课程首页下载所有仓库中指定分支的内容。

下图是下载所有学生仓库中homework01分支下的作业示例。

![微信截图_20211014084306](image/微信截图_20211014084306.png)

## 四、积分系统

在课程首页的右下角展示了积分排行榜。

![微信截图_20211014084546](image/微信截图_20211014084546.png)

单击排行榜右侧的数字处，可查看学生提交数量、提问数量、回答数量等信息。

提交数量：学生在课程中提交作业、代码的次数

提问数量：学生在仓库话题中的发帖条数

回答数量：学生在仓库话题中的跟帖条数

![微信截图_20211014084630](image/微信截图_20211014084630.png)

单击“设置评分权重”，可以设置各项分数的权重。系统会加权赋分给出学生分数。

![微信截图_20211014084649](image/微信截图_20211014084649.png)