美文网首页Git使用GitGit
git初学者必须熟记的三个概念

git初学者必须熟记的三个概念

作者: 子雄 | 来源:发表于2018-03-03 21:17 被阅读36次

原文链接:http://www.zixiong.org/blog/2015/11/01/3things-git-beginners-better-remember.html

熟练使用git的人大多对git带来的效率提升赞不绝口,而初学者往往被git很多“复杂”的概念弄得晕头转向。我认为git有很多优美的设计,你理解了这些设计的思想和基本的工作原理,用起来才会知其所以然,得心应手。

commit图的概念

git存放数据的核心是一个有向无环图,每次commit或者merge都会形成一个新的节点,指向它的父节点或者父节点们(merge时)。

commit图commit图
每个节点存放的是commit前所有文件和目录结构的快照,并根据快照计算出一个独一无二的hash值来标识这个快照。这个图的数据只会增加不会减少,也就是说,对于新手来说,怎么玩git都不会导致数据丢失,你总有办法恢复到原来的样子。
把这个commit图结构挂念在心里,并结合下一点服用,才不会被各种分支啊合并啊reset啊弄得晕头转向。

引用的概念

你见的最多的本地分支、远程分支、tag、HEAD等等,其实本质上都是对上面那个commit图的节点的引用。你可以理解为贴了一张便条。比如我在master上新建了一个分支develop.

git branch develop
引用图引用图
你并没有真的copy了一份代码到新的分支里,你只是给这个commit图又多贴了一个叫做develop分支的便条。
分支图分支图
当你在两个分支上又添加了新的内容时,这些便条也会随着往前往后移动。
总览图总览图
同理,tag也是标记某一个特定版本的便条。
常见的origin/master也是一种不同的便条,它表示你上次与服务器同步master分支时的位置,origin表示它来至于不同的命名空间
HEAD是一种比较特殊的便条,它指向某一个便条,表示当前工作的节点,当然你也可以把它指向一个节点,比如执行git checkout 56ca4它就指向了根节点.
这些引用可以随意的移动,怎么玩也不会出事,因为你并没有改变commit图

分布式的概念

git区别于svn的最大的特点就是它是分布式的版本控制系统,每个仓库都可以是服务器,每个仓库也可以是客户端。服务器和客户端拥有相同的内容(那个.git文件夹)。你可以把你的代码push到同事李雷的电脑上去,然后从同事李蕾蕾的电脑上pull代码。前提是都是同一个git仓库(有相同的根节点),不管你从哪儿pull代码,git都会执行同样的合并策略,git并不知道有服务器这种角色存在。

但在实际操作中往往会有一个或多个git服务器,比如github,这是为了获得集中管理的好处。但必须明白的是git服务器的角色是虚拟出来的,不是绝对的,它在本质上和客户端的仓库没有区别。(实际上有一点点区别,服务器上的仓库没有工作区)。你可以随时跟换你的服务器。

这种分布式的设计带来了很多好处:

  • 离线提交:执行一次commit,只是给commit图增加了一个节点,不需要与服务器通信。也就是说你在出差的火车上也可以和平常一样的写代码。
  • 离线回滚:同样的,回退版本也不需要联网。因为服务器有的,你都有。
  • 精细的版本控制:我习惯于每完成一个小功能就commit一次,追踪自己的开发过程。而据说很多用svn的人,只是把svn当做同步代码的工具使用,这样就失去了版本控制的意义。
  • 简单便捷:开启一个项目,只需要执行git init就行了,而不需要建一个svn服务器。

最后

git是个小而美的工具,也是像github这样的开源社区能够发展壮大的原因之一。我前期在使用git的过程中经常感觉复杂、摸不着头脑,但在比较深入的理解了以上几个概念之后,才觉得开始上路了,对很多命令以及背后的原理都有一种恍然大悟的感觉。git在设计上很多哲学都是值得深入研究和体会的,linus torvalds不愧为大神。

几个git学习资料:

  1. interactive教学版 看完这个基本能上手了
  2. git团队协作 团队协作进阶
  3. 实用git工作流 继续进阶

相关文章

  • git初学者必须熟记的三个概念

    原文链接:http://www.zixiong.org/blog/2015/11/01/3things-git-b...

  • 2019-03-01

    初学者必须知道的几个Git的命令:1.git init2.git add把文件名加入仓库3.git commit-...

  • git入门

    git入门 git笔记会随着时间进行更正 更新:2019/10/09 23:02 几个概念 git的三个区域工作区...

  • git文件的操作

    什么是git仓库? 让我们来重温一下三个区域的概念: git有三个工作区域:工作目录(Working Direct...

  • 1,GIT版本控制

    开头 我对git的总结,大体上分为三个方面。 认知与概念 命令 技巧 认知与概念 git与svn,是现在最主流的两...

  • Git 入门笔记

    什么是Git 基于文件快照的分布式版本控制工具 Git基础概念 三个重要的工作区: 数据仓库:保存了所有Git提交...

  • 必会的List Comprehension (列表推导式)

    强大的List Comprehension (列表推导式)是Python中必须知道的概念。然而对于初学者来说是最具...

  • Git:Git Handbook

    1、基本概念 在 Git 的世界里,有三个地方:工作目录、暂存区、Git仓库。 工作目录(working dire...

  • git使用

    概念 Git 仓库有三个主要组成——工作目录,缓存区和提交历史。 1、git的工作区: 在当前仓库中,新增,更改,...

  • 学习时的进度条你把握好了吗?

    不要短期期望过高,也不要长期期望过低。这是成长里面必须要熟记于心的一个概念。但是这个进度条如何把握?虽然因人而异,...

网友评论

    本文标题:git初学者必须熟记的三个概念

    本文链接:https://www.haomeiwen.com/subject/zeexfftx.html