# 水杉码园教师使用手册(详细版) [toc] ## 一、课程管理 ### 1.1 课程创建 课程创建前需要登录教师账号,URL:http://gitea.shuishan.net.cn/ 在首页中选择“课程”点击下方“+”号,或单击左上角头像处在下拉菜单中选择“ + 创建课程”进行课程创建。 ![微信截图_20211013183551](image/微信截图_20211013183551.png) 页面跳转至“创建课程页”,按提示填写相关信息,单击“创建课程”完成课程创建。 注意:作业最大次数默认为10次,教师可根据开课过程中布置的作业次数设置该值,因创建课程后该值不可修改,建议设置作业最大次数略大于实际作业次数。 ![微信截图_20211013211620](image/微信截图_20211013211620.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) 进入作业管理界面,管理员可以通过作业布置向对应的作业分支发送作业素材。 ![作业管理](image/作业管理.png) ![作业布置](image/作业布置.png) 同时管理员可以设置作业提交的截止时间。 ![截止日期](image/截止日期.png) 管理员还可以对学生提交的作业进行相似度比对。 ![相似度](image/相似度.png) ![相似度结果](image/相似度结果.png) ## 四、积分系统 在课程首页的右下角展示了积分排行榜。 ![微信截图_20211014084546](image/微信截图_20211014084546.png) 单击排行榜右侧的数字处,可查看学生提交数量、提问数量、回答数量等信息。 提交数量:学生在课程中提交作业、代码的次数 提问数量:学生在仓库话题中的发帖条数 回答数量:学生在仓库话题中的跟帖条数 ![微信截图_20211014084630](image/微信截图_20211014084630.png) 单击“设置评分权重”,可以设置各项分数的权重。系统会加权赋分给出学生分数。 ![微信截图_20211014084649](image/微信截图_20211014084649.png)