前言
常言道:“工欲善其事,必先利其器”。要有效率地开展科研工作,不仅需要持续投入时间和热情,还有必要掌握好文献管理、数据处理与分析以及团队合作等各项技能。一款好的软件能大幅提高科研生产力,善用各类软件处理重复性工作,有助于事半功倍地完成科研任务和事务,从而将更多时间用于思考。对于以建模为重要科研工作内容的科研人员而言,掌握相应的编程语言、文本编辑器和代码管理等软件无疑能极大提高工作效率;而对于较少涉及建模或代码维护的研究人员而言,掌握数据分析与可视化软件、计算机系统设置以及高效文件管理方式,也能大幅提高生产力。
基于此,我们根据课题组长期以来的探索和实践,总结了有助于提高个人和团队科研生产力的各类软件使用方法和学习资源,并以系列推送的方式推出,以期对读者有所启发。系列推送包括三个部分:(1)高效编程,介绍提高建模和数据分析效率的常用程序语言,如Batch批处理、LaTex、Linux与Cygwin、R语言以及文本编辑器,本课题组开发的IMED模型就是深度糅合各种编程语言和工具构建的超复杂系统;(2)高效利器,介绍适用于个人办公提效的实用小工具,如各种作图软件、快捷操作开源软件、文献管理利器Endnote和资源管理利器Total Commander;(3)高效协作,介绍适用于团队管理和协作的各种解决方案,如资料存储FTP、代码版本管理的Github、云硬盘坚果云、以及团队协作平台Teambition等。读者可在公众号→科研拾贝→研之有效栏目中阅读全部内容。
借此机会,我们向这方面的几位引路人致以崇高的敬意,包括善用佳软的作者张玉新、TC开发者Ghisler、R语言社区的谢益辉和赵鹏,感谢他们付出大量时间精力创作无数篇文风风趣而又干货满满的博文,无私分享国内外开源软件、开发R实用包、推广R语言,为我们打开了一扇开源与分享之门。此外, Stack Overflow网站也是一盏藏龙卧虎的指明灯。最后,我们希望本系列推送能起到“抛砖引玉”之效,激励读者高效工作、快乐科研。
——北京大学LEEEP研究组
第十三期 高效利器之Github
本期导读
所谓“一人行快,多人行远”,在学术科研中,团队合作“升级打怪”必不可少。高效的团队协作方式不仅能够提高团队科研效率、共同完成既定任务,更能够促进团队成员的有效沟通。良好的团队协作离不开团队协作工具的帮助。对于致力于模型开发或涉及大量编程语言使用的团队而言,GitHub是一个适用于分布式开发,能够实现多人协作管理代码、进行高效的版本控制的软件。本文主要就GitHub软件的相关知识进行介绍。
本文约1700字,阅读完需要约5分钟
Git和Github
Git是一个分布式的开源版本控制系统,能实现多人协作以及同时管理项目,并记录每次文件的改动。项目成员使用Git时可以自由地从共享版本库中克隆相关文件到本地版本库,基于本地版本库工作,并将工作记录提交到共享版本库。项目的管理员通过审核提交的工作记录决定是否接受修改并将其整合到共享版本库中。Git服务强调个体的工作效率,分布式开发的工作模式不影响其他人员。
图1 Git服务模式(图片来自网络)Github是一款基于Git的代码托管平台,是目前使用最广泛的代码管理系统。Github能够实现代码储存与共享、项目管理、团队协作等功能。
图2 Github功能 Part 1 Github使用方法1
Github网页版(https://github.com/)
- 在Github官网设置账号密码,通过邮箱验证后完成账号注册。
- 免费获取教师/学生福利
- 创建项目(库,Repository简称Repo)
- 分支管理-Branches
- Github提供找回历史版本的功能,即找到改历史版本对应的提交记录,下载相关文件。
2
Github桌面版 (https://desktop.github.com/)
- Github桌面版和网页配合使用,真正实现分布式管理。用户可以在本地管理和修改代码,并将本地的修改同步到远端。
- 在File选项卡中,用户可以把远端某个自己有修改或访问权限的Repo克隆到本地,就可以在本地查看信息。
- 每位有权限者都可克隆到本地。与坚果云等不同的是,一个人的本地修改不会自动同步到另一个人的本地。即本地的代码修改是独立的。而本地的修改可以且仅可以上传、覆盖远端自己账号的Repo(而不会自动覆盖其他人本地的Repo)。远端的代码即可被同组成员看到,其他成员可以选择把远端Repo的最新更新同步下来。
Part 2 Github团队协作
Github的一大功能是实现项目共享和团队协作。Github社区有许多十分著名的开源软件协作项目如Bootstrap,感兴趣的程序员们可以自由在此项目上工作并进行贡献。我们可以通过简单的设置在Github上进行团队协作。
图5 bootstrap项目1
方法一
针对单一开发项目(Repo)的共享。我们可以在自己想要共享的Repo中添加协作者,此时所有协作者都可以看到整个Repo,并创建属于协作者自己的分支(branch)。协作者可以管理自己的分支,但不能对其他人的分支进行设置。
图6 同步权限2
方法二
创建“组织”,在组织中进行团队管理。我们可以在setting中创建组织,并邀请协作者加入这个组织。在组织中可以创建属于组织的Repo。针对每个Repo,组织可以给每个成员设置不同的权限,也可以添加组织外的合作者。
图7 查看组织
Part 3 Github社区
我们可以在Github上搜索相关的开源项目,虽然不具有协作权,但仍可以自由复制(Fork)别人的库进行学习和研究,若发现Bug可以进行修改并提交合并申请。
图8 Prof.Unger团队的开源YIBS模型(空气污染对植物生长的影响)Part 4 延伸:Github的相似产品—码云(Gitee)
Gitee是开源中国(https://www.oschina.net/)开发的一款基于git的代码托管平台,能够实现代码托管、项目管理、协作开发,目前是国内最大的代码系统。Gitee除了提供最基础的 Git 代码托管之外,还提供代码在线查看、Fork、Pull Request、打包下载任意版本、代码质量检测等方便管理、开发、协作、共享的功能。与Github相比,Gitee具有速度更快、支持中文界面、支持5人以内的免费私密项目等优势。
Part 5 参考资料及推荐学习资料
1
综合教程/笔记
1. 从0开始学习 GitHub 系列之「初识 GitHub」 https://zhuanlan.zhihu.com/p/21103336?refer=stormzhang2. 史上最浅显易懂的Git教程-廖雪峰. https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b0003. Git学习笔记
https://www.jianshu.com/p/9eaf603b4796?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation
4. Git简易指南 https://www.bootcss.com/p/git-guide/5. CSDN | Git 使用详细教 https://blog.csdn.net/Free_Wind22/article/details/509677236. 码云帮助中心 https://gitee.com/help2
团队协作方面
1. Github团队协作教程(Gitkraken版) https://www.jianshu.com/p/9f5f0b2f0b3b 2. GitHub团队项目合作流程 https://www.cnblogs.com/schaepher/p/4933873.html敬请关注公众号了解LEEEP组研究动态
IMED研究 / 研之有效/ 讲座会议 / 工作机会
编辑 | 马腾
排版 | 胡卉然 刘晓瑞
相关阅读
1 IMED综合评估模型体系介绍2 招聘 | 北京大学能源环境经济与政策研究组博后招聘公告
3 研之有效 | 高效编程之添加环境变量
4 研之有效 | 高效编程之Batch批处理程序5 研之有效 | 高效编程之LaTeX简介
6 研之有效 | 高效编程之Linux和Cygwin
7 研之有效 | 高效编程之NCL数据处理及绘图语言
8 研之有效 | 高效编程之轻量级文本编辑器
9 研之有效 | 高效编程之R语言
10 研之有效 | 高效利器之实用绘图软件
11 研之有效 | 高效利器之实用快捷操作开源软件
12 研之有效 | 高效利器之EndNote软件使用指南
13 研之有效 | 高效利器之文件管理软件Total Commander
14 研之有效 | 高效协作之常用FTP软件