Chapter 3 Git
本部分主要介绍Git。英文Git教程参见Get started with GitHub | Happy Git and GitHub for the useR
3.1 介绍:Project
创建Project是在使用R时基本功(想不通为啥各大教材和课都不先教create new project,以至于常年找不到文件在哪儿)。
在Rtudio的右上角,点击后选择New Project
可以创建新的Project。一般来说,在创建本地新项目时选择new directory
就行(相当于创建一个新文件夹)你应该将同一个项目的数据、图片、代码等一系列文件都置于一个Project下。这样能减少数据和代码丢失的可能性,同时在导入数据和图片时,路径也能变短(Project下,默认路径为working directory)。
3.2 如何Clone他人公开的Github(读)
我们能在有读取权限的repo中找到对应的https
链接。
在创建New Project
时选择Version Control
,Git
并复制Https以克隆其他人的repo。
3.3 如何创建一个自己的repo,并保持本地与Github的联动(单人版:写)
(假设你已经有了自己的Github账号,R和Rstudio)
我们需要完成自己的Rstudio与Github账号的联动工作,才能写入Github上的repo。这只需要设置一次,别担心。(英文教程
3.3.1 设置部分
3.3.1.1 得到Token
首先,在github中创建一个token以表明身份,按照步骤操作即可。Token类似于密码,需要小心保管。
3.3.1.2 在Rtudio中储存账号信息
现在,利用credentials
包在R中储存Github账号信息。你需要将得到的Token输入到set_github_pat()
中
3.3.2 实现联动:Pull, Commit和Push
建议读者首先在Github中创建一个新repo,并利用3.2的方法将其克隆到本地文件中,然后再进行操作。(这相当于Git中的New Project, Github First。其他两种方式(将电脑中存在的project上传到Github中,将Github中已经存在的Project下载到电脑中)在happygitwithr有介绍。
本章节讲Pull(同步云端数据),Commit(确认本地更改),Push(更改云端数据)三个部分。
3.3.2.1 Pull:将Github中的repo读取并储存到本地
利用3.2中的方法,将自己的repo下载到本地。
3.3.2.2 Commit
在Rstudio的Git
部分有Commit栏,点进去,它会显示本地数据与云端数据(Github上)的区别(图片左栏)。左上显示有变化的文件,下方逐栏说明区别。
你可以使用stage确认变化(打勾),或使用unstage撤销更改。
在确认完更改后,你需要输入commit信息(一般而言是对更新的简要说明),并点击commit
按钮确认更改
3.3.2.3 Push
点击绿色向上箭头按钮,将本地更改上传到Github
3.4 Git Family:如何实现与他人联动
上部分的单人Github使用相当于一个大型网盘,主要用来备份数据,部分时候可以给其他人文件读取权限以方便分享。本部分在单人Github基础上,说明如何多人在同一个repo上工作。
3.4.1 权限赋予:Github中的工作
在Github的settings–Manage access部分,邀请你的朋友作为collaborator,和你一起工作(注意,Collaborator才有写权限)。
3.4.2 Pull:养成习惯
在每次开始工作时,你需要先知道其他人对repo做了什么。一定要在每次工作前先将Github上的最新版本文件pull到本地中。
3.4.3 Branch:避免Override
你可以和朋友们各自创建自己的Branch(详细原理可见happygitwithr)。这相当于各自在不同的工作线上工作(因此不会将文件更改上传到master上)。我们仅需要将自己Branch中完全确定并需要同他人共享的部分上传到master上。
3.4.4 Commit and Push
这与之前没有什么两样。