团队协作【Git】

关于Git

你可以把Git理解为一种在团队合作中用于版本控制的协议。当团队的多个成员共同开发一个项目、维护一个文档的时候,总会遇到本地版本和团队版本不一致的情况。而Git提供了完整的协议和框架,使得团队成员能说明自己的修改原因和范围,方便其他人对比不同版本的文档,实现文档的统一和同步。

即便不用于团队,Git也能助力于管理你的文档。你未来的毕业论文会是这样的吗?

毕业论文.doc
毕业论文改1.doc
毕业论文改2.doc
毕业论文完成版.doc
毕业论文最终版.doc
毕业论文最最终版.doc
毕业论文绝对不改版1.doc
毕业论文绝对不改版2.doc
毕业论文打死不改版.doc
遗书.doc

人生苦短,请用Git。有了Git,你就有了后悔药:即便你忘了之前改了什么、甚至不小心删除了某个文档,只要Git保存过之前的版本,就能立刻还原。

Git还能帮你打开一扇大门,那就是被戏称为全球最大同性交友网站的Github。这是一个基于Git的代码托管网站,你可以自己发布一个程序项目和其它程序员互动,也可以使用和完善他人的程序代码。Github对于bug的提出、修复都有完整的控制流程。

Git用于科研

适用于Git协议的科研资料一般需要满足以下几个要求,你可以合理使用.gitignore文件排除不需要版本控制的文件。如果是新建一个项目,必须一开始就指定好.gitignore文件,可参考这个页面提供的文件。

  1. 文件类型最好是可以用记事本打开的文本类型,比如程序代码(.py, .java, .c, .cpp)、Latex论文的相关文件(.tex, .bib, .cls, .bst)、其它资料或数据(.txt, .csv, .sql)等。很多同学习惯用word、excel,但这些软件生成的二进制文件(.docx, .xlsx)是无法通过Git实现版本控制的。

  2. 文件大小不宜过大。如果是文本类型文件,一般来说都不到1Mb。超过这个数值的文件(比如.pdf或有大量数据的.csv),建议将文件合理切割为需要改动的文件和不需要改动的文件,并将不需要改动的文件添加到.gitignore文件采用其他方式共享。

由于科研资料有一定的敏感性,一般来说远程库最好是需要密码方能访问。可以考虑采用Github或bitbucket等网站提供的私有代码托管功能。更好的方式是自建服务器(VPS或实体服务器),通过开源git服务软件(推荐gitea)等搭建自己的代码托管平台。

安装和学习Git

  • Windows:下载并安装 git.
  • Mac:使用 Homebrew, MacPortsbrew install git;或下载 安装程序 安装。
  • Linux (Ubuntu, Debian):sudo apt-get install git-core
  • Linux (Fedora, Red Hat, CentOS):sudo yum install git-core

如果下载速度十分缓慢,也可以参考这个页面,收录了存储于百度云的下载地址。

测试Git是否正常安装的方法是按Win+R键,输入cmd后回车,在命令窗口中输入git回车,应当看到对git命令的一些说明文字。

安装之后,可找一个网上的教程大致了解一下Git的使用,比如Git官方的教程

使用Git.agentlab.cn 【此部分内容仅限于我的合作者】

  1. 首先请确保已经安装好了Git协议。
  2. 请使用我提供的用户名和密码登录网站http://git.agentlab.cn/
  3. 如果我已经为您准备了一个Git仓库,可直接在右侧的My Repositories中找到。点击进入后可在库页面中间的右侧找到一个地址,类似http://git.agentlab.cn/HeZhou/abc.git。有了这个地址,则可以在你电脑的某个文件夹下打开命令窗口,输入git clone http://git.agentlab.cn/HeZhou/abc.git,就可以将远程的库下载到本地。
  4. 如果您已经在名为类似Doc的文件夹中存有文档,需要将本地的库上传到网站。首先在登录后页面的右上角点击加号,Create New Repository。只需要提交一个库名类似abc,就可以创建一个空的库。然后在库页面中间的右侧找到Settings,在Collaboration中将HeZhou添加为合作者。最后,在你电脑的某个文件夹下打开命令窗口,输入git clone http://git.agentlab.cn/YourName/abc.git,将Doc文件夹下的内容剪切到这个文件夹中。要完成本地库和远程库的同步,还需按照下一步提交文档内容到远程库。
  5. 当您更新了论文或者首次提交文档时,首先在文件夹下的命令窗口输入命令git add .(注意这个命令最后是以一个小数点结尾的),然后是git commit -m '修改的大致内容',最后是git push origin master。第一个命令是将所有修改添加到暂存区,第二个命令是将暂存区的修改更新到本地库,第三个命令是将本地库的master推送到远程库的origin。如果弹出窗口提示需要用户名和密码,则输入我提供的用户名和密码。
  6. 当您知道或预计我或其它合作者修改了一些文档内容,则需要先更新本地库。方法是在文件夹下的命令窗口输入命令git pull origin master,该命令是将远程库的origin抓取为本地库的master。