32

像数据专家一样备份资料、回溯历史:Git 入门

 5 years ago
source link: http://sspai.com/post/47694?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

用游戏的方式来学习,是一种有趣而高效的方式。

从刚接触电脑时的打字练习软件 金山打字通 ,到程序猿写代码的利器  Vim 都有小游戏( 金山打字通游戏VIM Adventures )来帮助我们入门。当你的目标从 掌握技能 转变为 打通游戏 之后,学习本身也就不再痛苦。在完成每一关的过程中,都能增加我们的技能熟练度和成就感。

JnAVRjF.png!web VIM Adventures

Learn Git Branching ,就是一个用小游戏带你入门的 Git 的网站。

为什么要学习 Git

Git 是一种分布式的版本管理系统,作用和网盘有点类似,但是功能性和灵活性都更强大。如果你是一个计算机专业的学生或从业者,Git 的重要性不言而喻;但是对普通人而言,Git 也有 备份数据、保存历史记录 等重要作用。

不怕断电、断网

数据无价,但很多时候我们无法保证自己的电脑不出问题。有很多时候我们会怀念上一个小时、前天或不久以前自己写的那些文字、画过的那些图 1 ,如何完好的保存数据是个永远的话题。将工作保存在云端也许会增加我们内心的安全感,这也是很多人会用网盘进行备份的原因。

Git 的「本地提交」较好地解决了这个问题,它的工作方式大概是这样: 即使没网络,我们也可以先工作,等到连上网络后再打包上传 。每个文档的名字都写有主要的工作(修改)内容,而且我们还能清楚地看到文档之间地区别和改动,Git 还会自动把历史纪录保存下来。对于越来越多开始从事移动办公、远程工作的人来说,由于网络环境不稳定,即使他不编程,也能从 Git 中受益。

严肃写作的一个个节点

iOS 上的知名笔记工具 Drafts 会在你写作时,每隔一分钟帮你保存一份当前文档的「快照」,这样就可以方便地找回之前的某个写作版本了。你觉得不满意而删除的一段文字,总可以在历史版本中找回,很贴心。 保存写作的历史版本其实就是建立写作节点的过程。而这,也是 Git 所擅长的。

buU3ear.jpg!web Drafts 的版本记录界面

对于论文、书籍这些严肃的写作内容来说,我们在写作的时候不会频繁的更改。深思熟虑之后,在一个节点时,我们有必要保存一下这一阶段的成果。同时,我们在对以前工作进行修改之后,也希望能便利地显示和以往的不同 2 。

Git 最原本的使用方式

Git 是一个分布式版本控制软件,于2005年以 GPL 发布。它最初是为更好地管理  Linux内核 开发而设计。它不需要服务器端软件就可以运作版本控制,使得源代码的发布和交流极其方便 3 。

GitHub 是通过 Git 进行版本控制的源代码托管服务 4 ,我们每个人都可以把自己的代码托管在上面。同时,也可以看看别人写的代码,相互交流,极大方便了软件项目的多人协作开发,也推动了开源软件社区的壮大。GitHub 所具有的社交性让很多人戏称为最大的同性交友网站(男性用户占绝大多数)。如果你愿意,可以把别人的代码下载到本地随意修改,放心这不会影响他人。 总之,在 GitHub 上,大家都用同一种语言进行代码仓库的操作,那就是本文的主角:Git。

如果你想开始学编程,一定想记录一下自己成长的路径。想必也一定会去 GitHub 看一看(来,这里是  按加星数排序的代码仓库 ),这时学一下 Git 不是顺理成章的吗?

怎么学习 Git

曾经我在好奇心的驱使下去学习最浅显易懂的 Git 教程 廖雪峰的 Git 教程 。但经过一段时间之后,我发现自己仅仅会使用  git clonegit addgit commitgit push 等简单语句。之后多次查看  git rebase 的用法,也一直没有理解。我们来看看最基本的几条命令有什么作用:

git clone 克隆:下载远程代码仓库到本地;
git add 添加:添加文件、修改后的文件到暂存区;
git commit 提交:建立本地仓库的工作节点;
git push 推送:将本地仓库推送到远程代码托管服务、网站。

就像很多次把学过的知识还给老师的经历,这次只记住几个简单命令的过程依然没让我失望。这些命令是我平时使用最多的,所以记得最牢,而其他命令只能用到时再去查了。 没有经过实践的知识好像无法停留在脑子里。

前几天在 twitter 上闲逛,发现了一个可以交互式学习 Git 的网站 Learn Git Branching 。尝试了一下发现效果真的很棒,有一种在玩编程游戏的感觉。回想啃着玩  Human Resource Machine 的经历,证明 不在于知识本身多艰深,只要学习曲线不陡峭,咱都能爬上去。

BVbiYry.gifHuman Resource Machine

Learn Git Branching

uEZN3if.jpg!web 欢迎光临

网站是有中文的,而且界面很不错,给人的第一印象很友好。

7VbaueE.png!web 关卡选择

关卡选择界面可以看到,有「主要」、「远程」两部分。每一部分的内容不多,覆盖了基本的用法。每一关都是一个模拟的小项目,通过上手操作很容易获得代入感。代码本身的用法在玩游戏的过程中领会到,这种感觉很棒,让人上瘾。

yIvAnaZ.gif 远程部分示范

教程的每一关都有引导,告诉你示范动作是怎样的、会有什么结果。稍作了解之后就可以自己上手探索。模仿之前教的动作,做错了可以 reset 命令从头开始。完成之后,可以用  show solution 命令查看答案。这种即时反馈的学习让过程变得有趣。

m2auU3M.gif

从 Git 到 GitHub

说了这么多,简单讲一下具体的流程:

  1. git clone  下载代码到本地。
  2. 创建了自己的文件,或者进行了修改,可以用  git add .  把所有文件加入暂存区,等待建立节点。
  3. git commit -m "这一阶段工作描述"  尽量细化你的节点,别做了很多工作才提交一次呀。
  4. git push  把之前建立的一系列节点推送到 GitHub 发布、保存。
  5. git pull  将 GitHub 的改动同步到本地,比如你在办公室电脑的改动同步到家里,或者多人协作项目中他人的改动同步到本地。

总结一下就是: 「记录修改、本地提交、传到云端」 的过程。

其他学习资源

除了之前文章中提到的 廖雪峰的 Git 教程 外,还有很多学习资料。比如:

  • Pro Git 第二版 。这本书被誉为 Git 学习的圣经,作者是  Scott Chacon  和  Ben Straub 。Scott Chacon 在 GitHub 工作,自称 Git 的布道者。你可以在网站上免费阅读这本书,也可以下载他们提供的电子版本。
  • git-recipes 。它  童仲毅 (geeeeeeeeek@github)  对很多英文资料进行翻译、整理的集合教程。包含入门基础、进阶知识和应用范例。这些英文资料主要包括  GitHub 竞争者 Bitbucket 的 Git 教程
  • 谷歌无人车之父 Sebastian Thrun 创办的  优达学城(Udacity) 上面的  免费 Git 课程 。这门课程由优达学城与 GitHub 共同制作,介绍进行版本控制的基础知识,重点讲解 Git 版本控制系统以及 GitHub 协作平台。如果你更喜欢这种上课方式,这门课程随时都可以开始学习。
  • happypeter1983 的 Git 视频教程 。这份教程就更进阶了一些。讲到了一些高级命令的用法。当然还有其他学习资源。

Git 本身不难,但学会之后就是另一方天地。尽快在项目或工作中实践吧!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK