专栏首页码洞一天彻底搞懂 Git 《Git 原理详解及实用指南》

一天彻底搞懂 Git 《Git 原理详解及实用指南》

我是扔物线,Android 开发者,开源贡献者,在 GitHub 上有 4.9k followers 和 7.8k stars ,个人的 Android 开源库 MaterialEditText 被全世界多个项目引用,其中包括在全球拥有 5 亿用户的新闻阅读软件 Flipboard 。曾两次在 Google Developer Group Beijing 线下分享会中担任 Android 部分的讲师。个人技术文章《给 Android 开发者的 RxJava 详解》发布后,在国内多个公司和团队内部被转发分享和作为团队技术会议的主要资料来源,以及逆向传播到了美国一些如 Google 、 Uber 等公司的部分华人团队。

现在我正全职在做一个我个人的免费的 Android 高级进阶分享计划 HenCoder,旨在帮助国内的高级 Android 工程师(例如小团队的 Android Leader)突破技术瓶颈,继续高速提升。

老钱点评:这不是乔杉嘛,他也会搞 IT?他头发怎么掉光了???

小册简介

「Git 好难啊!」不会用 Git 和会用 Git 的人都这么说。

随着这几年 GitHub 的流行,Git 已经是一个程序员逃不过的技术项,但很多人却纷纷倒在了学习它的路上。而且,出于工作原因而不得不用 Git 的人,有不少在工作中对 Git 也是能不用就不用,生怕哪个命令用错就把公司的代码库毁掉了?。而那些对 Git 掌握得比较好的少数人,就像团队中的神一样,在同事遇到 Git 相关的问题的时候用各种风骚操作来拯救队友于水火。

学不会、学不好 Git 的人,其实多数并不是不愿意学。很多人都会尝试去网上找 Git 教程、去社区请教高手、在公司咨询同事,但转了一大圈下来,依然没有搞懂,甚至有可能越来越糊涂。

- 你刚才输入的这个 Git 指令是什么意思? - 意思是 XXX。 - 可你上次跟我说它的意思是 YYY 啊? - 嗯对,不同的场景不同的用法,上次是 YYY。 - ……好吧。另外你上次帮我解决这个问题用的是另一个指令 zzz 啊? - 嗯对,那个也能解决,但这次用这个指令更适合,因为 @#¥@%*&。 - …… - 懂了吗?不懂的话还可以问我,没事的。 - ……

Git 学习到底难在哪?

Git 的学习曲线很不友好:想上手很容易,只要学会 commit、push、pull 等几个指令,就能够初步地使用它;但如果想要更进一步,让自己能够在团队项目中和朋友或同事自由合作,却又很难。

那么 Git 到底难在哪呢?

其实关键在于一点:概念。

Git 的概念,是由一套完整的思维逻辑所构成的。 你不能从多个角度分步理解它,而是要把它作为一个整体一下子吃掉;而同时这个「整体」由于过于复杂,又实在有点难以一口吞。颇有点悖论的意味。

很多人在使用 Git 一段时间后,会觉得 Git 有点复杂和混乱:

- 为什么要 commit 后再 push 这么啰嗦,而不能直接提交到中央仓库? - reset 这个指令为什么这么神奇,好多看起来并不相似的操作却都要用到它?它到底是干嘛的? - revert 和 rebase 都可以撤销历史提交?它们的区别在哪?什么,你说 reset 也行?

类似的问题其实还有很多。这些问题看起来每个都很难,但只要你把 Git 的概念了解了,这些问题(以及那些许许多多我没有列出来的问题)就全都迎刃而解了。

学懂了概念,就能学懂 Git,就这么简单。可是市面上的很多 Git 教程都只停留在了 Git 的使用上,而对它的概念却总是一笔带过或干脆提都不提。这里的原因,我猜可能是因为它的概念太难讲清楚了,也可能是因为这些作者其实也对 Git 的许多概念并不够了解吧(这句是胡说八道,Git 教程的作者们请放下手中的枪)。

你为什么应该选择这本小册?

读了这本小册,你可以彻底理解 Git,从而彻底会用 Git。Git 的确很难,但别担心,读了这本小册你就从根本上掌握它了(虽然熟练使用还会需要一些时间来练习)。

我写技术文章,比较喜欢挑难的写:难学会的,难讲清的。我写过 RxJava 的详解,写过 Android 自定义 View 的原理,目前来看反馈都很不错。这些「学的人学不会,讲的人讲不明白」的东西,写起来很痛苦,但写完之后的成就感也挺大,我会去跟老婆吹牛:「这东西好多人都讲不明白,我给讲明白了,你看这些人看了以后留言多激动」(这话只敢在家说,出去说怕被打)。而且,写着写着,我也越来越明白怎么把复杂的技术讲简单、讲透彻。

所以简单地总结:Git 难学,是因为它的概念难以整体理解。而这本小册,就是从概念的角度出发,帮你先从本质上了解 Git 的工作模型,在此基础上去了解它的具体用法,以此来达到四两拨千斤的学习效果。而且这样的学习具有更高的持久性,在看完这本小册之后,你以后也很难再忘掉 Git 的用法了。

你会学到什么?

  • Git 的基本用法
  • Git 的高级用法
  • Git 的概念和本质
  • Git 中的常见问题的处理方式
  • Git 中的高级需求的解决方案

例如:「如何修改历史提交中的错误」「误删 branch 怎么办」「merge 和 rebase 的区别」「reset 的几种实用用法」这类东西又多又难记,但其实你根本不用去记它们。在你了解了 Git 的本质之后,不仅这些日经问题你能轻松解答,而且一些罕见的、复杂的问题,你也应付得来。

你应该已经具备什么?

  • 基本的编程能力
  • Linux / Unix 的 Terminal 或 Windows 的 CMD 控制台的基本使用经验

你需要准备什么?

  • 一台用于读小册和做简单练习的可以联网的电脑

你需要做什么?

  • 把这本小册认真读完
  • 在读的过程中把所有练习做完

然后,你就可以在工作中自如地使用 Git 了。而且很快,你就能成为同事眼里的那个神奇的「救火队员」(如果你愿意的话)。

读完这本小册你会发现,Git 真的不难。

本文分享自微信公众号 - 码洞(codehole)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-03-24

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 为什么公司里普遍存在内斗现象?

    公司凡是有内斗的地方,根源都在内斗部门的直属上级老板身上。出现内斗一般两种情况:

    老钱
  • 以太坊合约分析之远程购买

    用户在淘宝上买东西是先将钱转入支付宝,然后卖方发货,用户收到货后确认收获,支付宝就可以将钱打给卖方,如果卖方没有货,卖方就可以终止交易,支付宝将将返还给用户。

    老钱
  • 天下无难试之HTTP协议面试刁难大全

    小编是一个非典型面试官,对于HTTP协议的第一个问题,一般人会问常用的状态码有哪些。小编不这么问,小编的问题是HTTP的全称是什么,把英语给我说出来!

    老钱
  • Git实用教程(二) | Git简介及安装详解

    Git(官网 https://git-scm.com/)是一个免费开源的分布式版本控制系统,其最初在2005年由Linux之父Linus使用C语言开发,目的是为...

    Mculover666
  • Github学习文档-2

    你可能会问学习 GitHub 和 Git 有什么关系吗?首先 GitHub 的功能本身就是基于 Git 来实现。现在的问题是 Git 是什么?Git 是一个开源...

    Wizey
  • Git原理之时光机和分布式

    Git是我们日常开发的必备工具,是团队协作的利器。Git使用广泛,而之所以如此流行,主要和它的一些突出的优点分不开。

    AntDream
  • 1.3 起步 - Git 基础

    那么,简单地说,Git 究竟是怎样的一个系统呢? 请注意接下来的内容非常重要,若你理解了 Git 的思想和基本工作原理,用起来就会知其所以然,游刃有余。 在开...

    shaonbean
  • 如何在Ubuntu 18.04上安装Git [快速入门]

    版本控制系统可帮助您共享和协作开发软件以及开发项目。Git是目前最流行的版本控制系统之一。

    GeekZ
  • 如何在Debian 8上安装Git

    Git是自2005年发布以来根据GNU通用公共许可证v.2的条款分发的版本控制系统。

    无敌小笼包
  • Git下载及配置环境变量

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details/...

    用户2965908

扫码关注云+社区

领取腾讯云代金券