阿弥陀佛!欢迎来到Git+R大讲堂!我是唐三藏,英文名SanzangTang。今天我将给您讲解git和R的一些基础知识,以及使用Git+R做项目托管和自动化的背景、优势和一些基本的概念。希望通过我的讲解能够让您对Git和R有个基本的了解。为了方便起见,下文将Git+R简写为GitR。
先熟悉一些您现在所处的环境。您刚刚点击进入的这个页面与普通的页面有所不同,它是一个标准的git仓库页面。git仓库是本课程的主要内容,我们将在后面的章节详细讲解。现在您只需要大致浏览一些页面的布局和主要的内容就可以了。
之所以选择一个git仓库作为本课程的载体,一方面是因为git仓库是我们的主要内容,在一个仓库中学习仓库的知识,更有身临其境的感觉,另一方面,使用仓库来写文章、写教程也很方便及时,所见即所得,也能让您真切体会到git的优雅与强大。
GitR是一个项目仓库管理系统,简单的说,仓库就是存储项目文件的单元,一般一个项目对应一个仓库。每个注册用户都可以建立多个仓库。仓库管理系统就是管理这些仓库的软件,负责仓库的建立、删除、修改、迁移、文件显示、版本控制、仓库安全性、共享特征、项目组成员管理、任务分派、冲突解决等,现代的仓库管理系统还包含项目追踪、工单管理系统,以及一个用于向自己和别人介绍项目重要信息和项目组成员讨论问题的wiki系统。
当前流行的仓库管理系统有著名的Github、GitLab等,一般用于软件开发项目,也有人用于寄宿科研项目。这些系统功能强大,操作简单,资源丰富,是软件开发人员每天必去的不可或缺的淘宝之地。github上关于科技数据分析的项目很多,很多你想到的和你想不到的想法和分析手段都能在github上找到,因此对于科研人员来说也是必不可少的。
nu是个轻量级的git仓库系统,由开源项目gogs派生而来。它保留了github大部分功能,但运行更快,我们针对科研项目的特点进行了初步的定制,使之更适合于托管科研项目。由于众所周知的原因,国外部分网站的内容需要通过一个费时的安检系统,对于国内用户来说,有时候会慢的无法容忍。不幸的是,github竟然也在这个榜单之中。所以我们需要一个位于国内的项目托管系统,以提高访问速度。当然,如果有条件的话,您也可以建立一个自己的项目托管系统,这样不仅快,也更安全,至少更放心。
nu界面沿袭了github简单朴素的设计风格。
上面的第一行是主菜单,包含控制面板、工单管理、合并请求、浏览四个标签页。
进入控制面板页面,会发现页面分为两栏,左边一栏是仓库时间列表,列出了最近的项目创建、推送、修改的事件。右边一栏有三个标签页,分别是项目、组织和镜像标签。项目栏列出您托管的项目和您参与的项目,组织一栏列出您创建的或参与的组织,镜像指的是您把在其他托管系统托管的项目在本系统做了一个几乎相同的克隆,并且在设定的时间间隔与源仓库保持同步。每个标签页的右上角都有一个“+”号,用来添加新的项目、组织或创建新的镜像。
工单,顾名思义是指要做的工作的条子。这个条子上的内容可以是领导分配的任务,也可以是自己计划要做的事。工单在git系统中的名称是issue,是问题的意思,意即项目中遇到的什么问题,需要解决,领导把这个任务分配给某个项目组成员,由他负责解决这个问题。这有点像我们现在流行的所谓问题导向,就是我们传统的提出问题、分析问题、解决问题的思路。系统内置的工单系统除了普通的创建、修改、删除等基本操作之外,还有评论讨论的功能,便于团队成员一起讨论问题,集思广益,提供解决问题的建议。
合并请求是为团队协作设计的。nu采用需要审核的协作模型。团队成员对项目的管理权限有所区别,项目创建者或管理员拥有项目的完全读写权限。一个项目初始建立时只有一个分支,叫主分支,或叫做master分支,一般有创立者或项目管理员全权负责。项目团队其他成员的工作通过项目分支实现与主分支和其他成员分支的分离。每个成员在自己的分支上工作,比如输入数据、撰写文章、编写书籍中分配给自己的那部分章节,这样可以确保彼此不相互影响,避免内容冲突带来的麻烦(当然,即使有冲突也可以解决,这是git的基本功能)。当你认为工作已经完成,或者需要别人的帮助,你可以在主分支上发起一个合并请求,请求管理员把你的工作合并到主分支。同时,可以在工单系统中对你的工作成果或需要提供的帮助进行讨论。可以看出,这是一个谨慎的工作模型,尽管有些麻烦,但可以保证工作的清洁稳健,否则,过分的自由创作可能会使项目变得一团糟。
在这里可以查看最近的项目列表,或查询你感兴趣的项目。
主菜单的最右边是“+”和用户下拉菜单,分别用于提价项目和用户账户配置。
第二行是项目标题栏,最左边的图标代表这是个项目仓库,紧跟着“用户名/仓库标题”,就像这样:“SanzangTang/start_here”。点击用户名可以查看该用户所有的仓库。如果您拥有账户并登录,可以看到靠右的三个按钮。如果你对该项目感兴趣,可以关注它,这样该项目的最新进展可以通过邮件或其他方式推送给你。要是觉得项目做的不错可以点赞鼓励。最关键的是最后一个按钮——“派生”,你觉得这个项目设计的很好,或者其分析处理方法有借鉴意义。你可以从该项目派生,从而快速开始建立你自己的项目并尽快投入工作。
对于公开的项目,任何登录用户都可以派生。而私有的项目,只有组织或团队内的成员才有派生的权利。如果你暂时不想分享你的劳动,你可以把项目设为私有。
第三行为项目标签,所有的操作都只对当前项目有效。可以看到,四个标签中,“工单管理”和“合并请求”两个标签与第一行的主菜单完全相同,但这里的“工单管理”和“合并请求”是针对本项目的,而主菜单的显示对象是整个托管系统的所有可见项目。
点击文件标签,进入项目文件页面。这里显示项目的文件系统,其文件系统结构和资源管理中显示的相似,不同的是隐含文件是默认显示的。点击文件可以打开预览文件。其中的md文件是默认显示的,其他支持的文件类型有图像文件、文本文件(txt、csv)、pdf文件等,如有系统不支持的文件,如doc文件,可以下载到本地打开。
wiki页面用于编写关于项目的文档。不管是公开的还是私有的项目,编写一个清楚的文档都是一个很好的必须养成的习惯。对项目的来源、目的、意义、基本思想、结构组成、研究思路、研究方法、执行流程、执行过程中存在的问题及解决的办法等内容,编写一个条理清楚的文档,不仅便于你的粉丝或同事快速了解你的项目,也便于你理清思路、留存备忘,过了很长一段时间后,当你重新需要这个项目时,你还能快速恢复项目初始执行时的工作状态。
靠右的一个按钮用于配置仓库,进入页面后可以看到,多数设置都是自明的,有的后面会有简短的说明帮助你理解和设置。
第四行为当前浏览的文件夹或文件路径,就像资源管理器或网页浏览器中的地址栏一样,指示您当前所在的项目位置。第一个按钮用来对比文件差异,显示当前文件与上一次提交之间的差异。这是一个非常有用的功能,便于您了解作者做了哪些最新更改。
随后的下拉菜单用于选择您要浏览的分支。分支是Git的一个重要概念,我们的科研项目用分支作管理团队中不同成员的工作。
分支下拉菜单之后的是当前文件的路径,点击路径可以导航的相应的文件或文件夹。在新建文件模式下可以建立文件,文件前面加上“/”将会在当前目录下新建文件夹,并在这个文件夹下面创建新的文件。比如在输入框中输入“nufolder/nufile.txt”,将在当前文件夹新建一个“nufolder”文件夹,并在“nufolder”下面建立文件“nufile.txt”。
在浏览模式下,还可以上传文件到当前文件夹,按照网页提示操作即可。