Why Version Control
为什么要版本控制。
Team work必须要有Version Control. 如果没有vc的话,想象一下四个人一起写一个项目,你花了两天写好了的一个feature,然后发给了各个队友,他们在此基础上加上他们的feature,加进去以后发现跑不起来,而之前能跑起来的版本已经没有了,这怎么办?如果有vc的话,这时候你可以很轻松地回到加入队友代码之前的样子,即一个
git checkout [commit id]
就能回去。当然git不是唯一的版本控制系统,但本文的namespace里,我们就把vcs默认成git.
你可能会问不就是在合并代码之前备份一下吗,有什么了不起的,我自己记着备份不就行了?
首先一个版本控制系统会极大方便你的备份。要备份比较原始的办法就是进入文件目录,打包成压缩包,压缩包最好能取个有意义的名字,这样以后查看起来会方便一点,然后你还要找到一个合适的安放压缩包的地方,可能还要建立一个文件夹,又要思考取什么名字;虽然备份不难,但细数一下,这些程序走下来还是很累的,用版本控制系统的话,你一个命令就能解决问题,git会自动给你的这个“备份“取名字,你也不用新建文件夹去保存备份,这一切git都帮你办好了。
而且版本控制系统远不止备份这么简单,它已经成为了工业标准的工具,现在流行的continuous delivery理念就是建立在version control的基础上。软件、web应用每个星期都在有更新,他们怎么做到稳定地为用户提供新功能,版本控制是一个重要的工具。
其实你并不应该把version control当作什么高不可攀的东西,befriend with it! 有一次软件工程课请来了一位业界的工程师,他偶尔问到how many of you use git? 基本上所有人都举手了,然后问how many of you love git? 绝大多数人也都举手了,git是个很良心的软件,虽然一开始的学习曲线会比较陡,但坚持一段时间以后,你也会爱上它的。
Why Github
Again, industry standard. 没错,GitHub是业界标准,基本上每个公司都在用,你可能好奇为什么看不到公司的repository,因为他们付钱买的private repository,你也可以买,价钱不是很贵。$15一个月的样子,不限制存量。
How to do it
首先你要在自己电脑上安装好git. 这我相信git官网有详细的说明。主要的流程是安装(install)和配置(config). 安装是把那些二进制文件copy到本地磁盘,config会要求你设置一下用户名和邮箱,这些都是一行命令就能解决的问题,相信读者可以独立完成。
然后你就可以在本地建立一个local git repo. 使用git必须和这些英文单词熟悉起来,local表示本地的文件,remote表示git服务器上的文件,repo是repository的简写,是代码仓库的意思。建立local git repo, 先cd到项目目录,然后用
git init
来初始化你的git repo. 然后用两行命令
git add .
git commit -m "First commit"
来保存当前版本。
到此为止我们成功地建立了本地的git repo, 下面介绍如何把本地repo上传到Github上。首先当然你需要一个GitHub的账号,注册一下很容易,然后在自己的页面下新建一个repository, 如图:
输入你的repo name, 你的第一个repo可以命名为Hello,然后点击下方的绿色按钮”Create repository”. 你就有了一个空的repo,像这样:
下面要做的是把本地文件上传上去。点击Quick setup下面的HTTPS, 把https://开头的url copy一下。打开终端,输入
git remote add origin [paste here]
在[paste here]的地方粘贴你刚复制的https链接,回车以后系统会提示你输入Github账号和密码,如实输入后,再在命令后打一行:
git push -u origin master
你的代码就上传到Github的服务器上了,刷新页面就能看到你的工作目录。
初学git不需要把一个命令里的所有部件都搞明白。比较有效率的学习方法应该是整体整体地学习,把某一条命令用熟。比如你一开始不需要搞懂git add ., git commit 为什么要连续进行,你只要照着做,知道这可以把你的当前版本保存起来。慢慢地你就会对git产生一些自己的体会,你会慢慢爱上它!
Your benefits for doing it
你把代码传到Github上了,恭喜你,你在程序员之路上已经到了一个新的层次。Github是全球的geek交流的地方,很多开源项目就在这里进行着,你要深入计算机行业的话,这个网站是个必须要熟练应用的工具,所以现在you are off to a very good start! Keep it up!
Github的repo方便你在任何地方访问自己的代码。如果你经常把代码传到Github上面,你可以在任何一台电脑上看到自己的代码(只要能上网,就能访问Github)。如果你需要使用代码,可以打包下载,也可以git clone下来。我自己体会到的一个方便之处就是公司电脑上写了一些自己的代码,发布到Github以后回家还能用自己的电脑继续写下去,无缝衔接。