一天彻底搞懂 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 指令是什么意思?
Git 学习到底难在哪?
Git 的学习曲线很不友好:想上手很容易,只要学会 commit、push、pull 等几个指令,就能够初步地使用它;但如果想要更进一步,让自己能够在团队项目中和朋友或同事自由合作,却又很难。
那么 Git 到底难在哪呢?
其实关键在于一点:概念。
Git 的概念,是由一套完整的思维逻辑所构成的。 你不能从多个角度分步理解它,而是要把它作为一个整体一下子吃掉;而同时这个「整体」由于过于复杂,又实在有点难以一口吞。颇有点悖论的意味。
很多人在使用 Git 一段时间后,会觉得 Git 有点复杂和混乱:
- 为什么要 commit 后再 push 这么啰嗦,而不能直接提交到中央仓库?
类似的问题其实还有很多。这些问题看起来每个都很难,但只要你把 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 真的不难。
一天彻底搞懂 Git 《Git 原理详解及实用指南》相关推荐
- Git 原理详解及实用指南
Git 原理详解及实用指南 什么是版本控制系统(VCS) 很多人认为 Git 难以理解的第一个门槛在于:所谓的「Git 是一个分布式版本控制系统」这句话的具体含义不够清楚.其实分布式版本控制系统(Di ...
- git 原理详解及实用指南_如何编写良好的提交消息:实用的Git指南
git 原理详解及实用指南 To create a useful revision history, teams should first agree on a commit message conv ...
- Git原理详解与实用指南
文章目录 上手 1:新公司用 Git 管理代码,怎么快速上手? 上手2:团队工作的基本工作模型 进阶1:HEAD.master与branch 进阶2:push的本质 进阶3:merge:合并commi ...
- Git的原理详解与使用-臧雪园-专题视频课程
Git的原理详解与使用-3人已学习 课程介绍 2018 Git的原理详解与使用视频教程,该课程主要从四个部分进行讲解:第一部分主要讲解了Git的基本使用.比如安装和git基本命令使用, ...
- Git命令家底儿及Git数据通信原理详解
声明:本文为CSDN原创投稿文章,未经许可,禁止任何形式的转载. 作者:周立伟(花名:华序,ITeye博客),关注分布式.高并发和Java中间件的研究. 责编:钱曙光,关注架构和算法领域,寻求报道或者 ...
- 一文搞懂二叉树遍历---超详解(二叉树逐步剖析二)
大家好!这里是小张,上次我们说到了二叉树的存储结构,今天我们继续来说说二叉树的遍历,废话不多说,我们现在就开始! 另外有很多小伙伴们在学习算法的时候,只去学习一些关于算法理论的知识,并不知道自己的代码 ...
- 一文搞懂,PO设计模式详解
PO模式: 全称:page objece,分层机制,让不同层去做不同类型的事情,让代码结构清晰,增加复⽤性. PO模式的优势: 1)效率⾼ :同理,PO模式的逻辑层⽅法有具体定义,情况和元素发⽣变化⼀ ...
- 一文带你搞懂React路由(详解版)
文章目录 React 路由
- zzz KVC/KVO原理详解及编程指南
前言: 1.本文基本不讲KVC/KVO的用法,只结合网上的资料说说对这种技术的理解. 2.由于KVO内容较少,而且是以KVC为基础实现的,本文将着重介绍KVC部分. 一.简介 KVC/KVO是观察者模 ...
最新文章
- 使用hello word写小说
- OPencv java Mat 基本操作像素点(7)
- python ggplot画等值线图,是否可以在Python ggplot上绘制多折线图?
- python爬虫有几种方法_基于Python爬虫的几种方法,python
- StarlingMVC Framework中文教程
- 使用js实现思维导图
- php 函数strtr 替换函数实例解析 strtr 速度比较快
- 数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】
- 去中心化交易聚合平台ParaSwap将平台交易gas费成本降低约 20%
- 彻底解决VS中找不到 Windows SDK 版本 8.1的错误
- 批量修改txt文件名,删除相同部分
- 20191223每日一句
- petalinux设计流程
- 微信小程序实现客服默认自动回复功能
- Zynga重返公有云 是否大势所趋
- 微信小程序等第三方应用接入易班的api
- 今日恐慌与贪婪指数为23,恐慌程度有所下降
- Django分布式路由
- 怎么将CAJ转换成PDF
- 4.ERC20常用查询操作
热门文章
- 实验一 HTML编程基础和Javascript编程基础
- 如何向国外专业期刊投稿
- Win95+IE3 – Win10+IE11全版本执行漏洞(含POC)
- (干货)结合Scikit-learn介绍几种常用的特征选择方法
- python编程简易打字评分小游戏
- ipython出现The history saving thread hit an unexpected error OperationalError no such table histor解决方案
- 信息安全服务资质-CCRC证书如何正确使用?
- ROS坐标系中base_link和base_footprint的区别
- 计算机毕业设计PHP的桌游信息管理系统(源码+程序+VUE+lw+部署)
- iOS多语言解决方案全面指南