||
作者:Wenhu
本讲第一部分,介绍git的“足够你用”命令;本讲为第二部分,介绍github的主要用途,包括版本管理、分枝管理等,以及推荐的在Rstudio中使用git的教程,部分内容改编自廖雪峰的《Git教程》。欢迎转载,但请注明出处!
源代码:https://github.com/mckf111/mckf111.github.io/tree/master/_posts
这可绝对是个好东西啊,日前刚被微软收购,不知前景如何!
前面提到git的两大特点,版本控制相信大家看到这里,已经了然于胸了,而想要一窥分布式的威力,就不得不提到github这个“交友网站”啦!
分布式其实就是多个电脑上的版本库同时更新,都是最新版本,当有一处电脑上的版本库有改动时,通过推送,其他电脑都能接收到,这为下面讲的多人协作分支管理提供了基础,而github相当于一个始终处于开机状态的电脑,其他所有电脑可随时联网与它保持更新,获得最新版本。分布式与集中式有本质上的区别,具体解释请参考廖雪峰:集中式VS分布式。
https://github.com/ 这个毫无难点,不用多说。
本地的git仓库和github上的仓库是通过SSH(secure shell)加密传输的,也就是你每次的版本同步更新,都要在验证密码正确的前提下进行:
ssh-keygen -t rsa -C "your_own_email@example.com"
把email地址换成你自己常用的,执行完上述命令后,你主目录(~)中就会有.ssh
文件夹出现,里面包含两个文件:id_rsa
和id_rsa.pub
,前面是私钥,不可泄露,而后面的是公钥(public),这是要提交给github的。
id_rsa.pub
的内容提交给github进入.ssh
目录,提取公钥内容。
cd ~/.ssh
cat id_rsa.pub
将屏幕上的内容全部复制下来,再来到你的github主页:Settings
- SSH and GPG keys
- New SSH key
- 取个title,”my_computer”之类的,然后把刚才复制的内容全部粘贴到下面的key
框框中 - Add SSH key
,至此,你的电脑本地仓库就和github配置好了安全连接。
github最重要的作用就是为你的本地项目提供一个云端同步更新的仓库,让你走到哪都能随意撸代码,无需担心版本问题,同时,如果有多人参与你的项目,你的合作者也能随时看到最新的版本状态,和你电脑上的版本库保持同步更新。
在你的github主页右上角可以看到一个+
,点开后,点击New repository
,进入创建远程库的初始界面,在Repository name
里填上你的仓库名称,本例中应填上myapp
,其他的不用管,直接点击最下方的绿色按钮Create repository
。
当然,你可以使用网页中的按扭来添加代码和文件,但我们更多的是在本地进行编辑和添加操作。命令行模式编辑一个仓库,注意修改github的用户名为自己帐号名称(非邮箱地址,每个github有一个用户名作为唯一地址,全球唯一),如下文中的YongXinliu
:
此处将用户名赋与变量,只需修改一次即可
username=YongxinLiu
git clone
)如果你的同事对版本做了修改,并且推送到了远程库,但你还没有更新,或者对github上别人的开源项目感兴趣,想弄到本地来研究研究,这时你就需要把远程库先给克隆到本地上来。
也是一个命令全搞定:
git clone git@github.com:${username}/myapp.git
其中,你所需要修改的就是:${username}
改为你想克隆的仓库的创建者,myapp
改为仓库名称,其他不用动,注意,其中的:
后面没有空格,不可习惯性的加上一个,否则报错!如果报错了,出了问题,请学会google和求助stackoverflow,这是必备技能,meta-knowledge!
# 进入工作目录
cd myapp
# 编辑文件
vim README.md
# 添加修改版本
git add .
git commit -m "modi readme"
git push
)我们要关注的是第二条:”…or push an existing repository from the command line”,把提示的命令输入到git bash中 (注意,此时你的工作目录必须在myapp/
中):
git push origin master
#Counting objects: 3, done.
#Writing objects: 100% (3/3), 279 bytes | 279.00 KiB/s, done.
#Total 3 (delta 0), reused 0 (delta 0)
#To github.com:YongxinLiu/myapp.git
# 3cdfcb3..9007fb7 master -> master
#Branch 'master' set up to track remote branch 'master' from 'origin'.
以后,在你想要把本地的commit
推送到远程库时,只需记住这一个命令:git push origin master
,其中origin
是远程库的名字,而master
则是主分支的名字。
这时,你再刷新一下github的myapp
页面,你会发现库中的内容和你本地一模一样了。
注意:第一次push的时候,会有警告出现,输入yes即可,不用害怕~
之前我们所有的操作都是在master
主分支中进行,但我们会经常有个新想法,想试验一下,写了几个文件,但又不想影响主分支,或者影响同伴的工作,怎么办?最好的就是,从master
上叉出一条次分支,与master
互不干扰,等到自己的开发成熟了,并且与同伴沟通好了,再把次分支合并到主分支上。这是git的最大特色了!
git branch
)在本例中,我们创建一个开发分支dev
elopment:
git branch dev
我们再看下目前有哪些分支:
git branch## dev## * master
结果提示我们目前有dev
和master
两个分支,前面带*
号的表明当前所处分支。
git checkout
)我们换到dev
分支去看看:
git checkout dev## Switched to branch 'dev'git status## On branch dev## nothing to commit, working tree clean
切换成功,现在你可以在dev
分支上做各种改动,但都不会丝毫影响到master
分支。
git merge
)当你对新开发的特性很满意之后,想要把dev
的改动全部合并到master
,可以用git merge BRANCHNAME
命令,首先要先切换到master
分支:
git checkout master## Switched to branch 'master'## Your branch is up-to-date with 'origin/master'.git merge dev## Already up-to-date.
git branch -d
)如果你不想要dev
分支了:
git branch -d dev## Deleted branch dev (was 7dcb016).
有木有觉得前面的指令打起来会经常敲错字母,比如我老是将git checkout
打成git chekout
,能否有简化一点的办法呢?必须有!别名(alias)!
git config --global alias.co checkout
输入上面指令之后,你每次就不用输入git checkout
了,只需git co
即可,爽不爽?那就继续多改几个吧:
git config --global alias.st status
git config --global alias.cm commit
git config --global alias.br branch
当然,你也可以指定你喜欢的别名,不一定要和我一样。最后,再来个猛的,从廖老师那里学到的:
git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
你可以输入git lg
试试看,好了,git的基本常用指令和github的简要介绍就到这里了,下面稍微提一下在R中如何玩git。
以上的知识,可以让你轻松管理你编辑的R代码,备份,版本管理。但Rstudio集成使用会有更直观的查看版本代码的修改。
相信很多Rer都是用Rstudio来写R和运行R的,Rstudio本身也集成了git的功能,并且做成了图形化界面,方便一些不习惯git bash的朋友,点点鼠标,就能完成版本控制!具体的用法,由于篇幅所限,就不展开说了,有兴趣的同学可以参考R packages: Git and Github http://r-pkgs.had.co.nz/git.html ,里面的介绍非常简洁易懂,半小时就能搞定,自主学习吧~
关注我的最新博文,请访问 http://bioinfostar.com
为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外1700+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍末解决群内讨论,问题不私聊,帮助同行。
学习扩增子、宏基因组科研思路和分析实战,关注“宏基因组”
点击阅读原文,跳转最新文章目录阅读
https://mp.weixin.qq.com/s/5jQspEvH5_4Xmart22gjMA
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-23 22:06
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社