码农之路恒久远,学习向上是真谛啊!在学习的过程中,相信大家或多或少都接触到Git这个东东。它到底是什么呢,有什么作用呢,为什么它会那么火呢?带着这些一连串的疑问,决心去揭开它的庐山真面目。

在软件开发过程中,一个团队强调的是合作和效率。那怎样才能很好的做到这些呢,这时候资源中央控制这个概念就出来了,它的思想就是将资源(project)布署在一个中央服务器,每个开发者都可以去里面实时的获取最新资源样本,本地处理后再提交到中央服

务器以致于达到一个协同开发,提高效率。这种开发工具目前有很多了,例如:VCS、SVN、Perforce、Git等等。至于选择哪一种就要看实际情况了,这不是文章的重点所以不去详细它了。

首先要知道,版本控制概念可分为两种。集中式中央处理系统和分布式管理系统。以上列举的VCS、SVN、Perforce都属于前者集中式中央处理系统,而Git以及Bitkeeper和 Mercurial则属于后者。那么两者有什么不同呢,顾名思义,集中式中央处理就是将资

源共享在远程服务端,每个开发者都必须依赖这个中央服务器,每个本地端只映射有当前的版本状态。每次牵涉到版本管理的工作(提交、删除、修改。查log以及查看版本间差别等等)都必须在有网(局域网也算)的状态下才能够完成。所以这种方式局限性和

操作简便性及安全性就可想而知了。然而分布式管理系统就很好的解决了这些,简单来说,对于服务器端的版本系统在各自的本地端都可以完完整整创建一份独立的。这样一来关于牵涉到版本管理的操作都可以在本地离线的状态下都可以完成了,其灵活性及便捷

性就不言而喻了。另外,我们在使用SVN或者接下来使用Git时候在本地project中会发现分别有一个.svn和.git文件。前者保存了当前版本的最新样本,其存储文件是根据文件名来区别,实则就是在克隆,而后者,则存储了project所有版本信息,存储的方式也高

效于SVN,它是才采用SHA-1哈希算法将文件内容转化成一个哈希值存储,所以这一块它不仅存储安全而且高效。说到这里,相信大家对Git应该有了一个初步的认识了,接下来我们一起来进一步的认清它,下面有两幅图绘制了Svn和Git的工作流程。

                                                         

(图1)                                                                                                                                                              (图2)

对于图1SVN代表的集中式中央管理系统,相信大家一看就懂,没什么好说的。对于后者Git,有几个新的点需要认清它。图2中的右边蓝色方块Local repository,就是上面所提到的Git所创建的本地仓储,里面的内容跟服务器端一样一样的,包括版本的历史

记录、tag等等所有信息。另外一个就是 图2中最下方绿色方块index,其实Git中独有的一个新的概念,被称为文件暂存区。本地每一次的添加的文件都会留有一个快照(索引标签)记录在该区。当你确定你所添加的无误之后就可以提交了,这时候被添加的文件就会

提交到本地仓储,也就是蓝色的方块Local repository中,如果发现你提交的有问题,那这时候这两个点的作用就凸显出来了,使用reset撤销命令,将状态转回到index状态,重新编辑提交。然而细心的你会发现我这本地所做的一切操作都是直接与 Local

repository 区打交道。这就是为什么你在没网的状态下任然可以工作,其次Git的操作因为大部分在本地以及资源也都在本地不需要像SVN那样需要从服务器获取,所以Git的工作效率要比SVN高多了,方便多了。处理完前面一切的编辑开发工作之后,发现提交

OK了,那这时候就可以在有网 的状态的 一次性的去提交的你所有的内容到服务器端。若果这时候,很不幸的你发现提交内容又有误想重来,那么这时候Git君的强大你就会被它给深深的折服了,无尽的后悔药,让你的开发工作妥妥的。

刚开始使用Git的时候,总是被一些杂乱的碎片概率以及相关的工具给迷惑住了。这里呢就来说明一下,首先那就是下载安装(平台区别化),直接去百度搜下Git接着下载安装msysGit即可。有一点要注重,在安装过程中有一布让你选择默认的配置工具如:命令行

工具bash和界面操作工具GUI,直接选中即可。对于Git目前最流行的服务器端就是GitHub,可以把它理解为其的代码托管站点。目前GitHub也已经有了自己的客户端,你可以直接下载使用即可,很方便的。这里也有一个地方需要注意一下,在安装GitHub客户端

之后,会附带一个命令行工具git shell,这个工具和 bash 基本差不多,使用哪一个都可以。对于Git,更多人都愿意使用其自带的命令行工具,而其自带的UI工具却不怎么提及,原因就是因为其命令行工具更好多。其实Git的界面操作工具也有很多,例如其自带的

GUI,以及TortoiseGit等等,至于选择哪一种就不用对说了。安装配置好了这些之后呢,接下来就是布署一个自己的项目到GitHub,简单的使用Git命令来体验下带给你的快感了。

 

更详细的介绍,接下来会给它整理出来。发现的不对的还望大家及时提出啊,共同学习进步哈!

初步窥探Git的更多相关文章

  1. 初步安装git使用命令配置电脑中的git关联的账户

    原文地址 https://www.jianshu.com/p/39684a3ad4fa 出现问题 当我们初步使用git的时候,会报一些出乎预料的错误,比如:报错:fatal: unable to au ...

  2. Git 系列(二):初步了解 Git

    在这个系列的介绍篇中,我们学习到了谁应该使用 Git,以及 Git 是用来做什么的.今天,我们将学习如何克隆公共 Git 仓库,以及如何提取出独立的文件而不用克隆整个仓库. 由于 Git 如此流行,因 ...

  3. gdb初步窥探

    本文是通过学习左耳朵皓帝的文章,详见:http://blog.csdn.net/haoel 1.使用gdb gdb主要是用来调试c和c++程序,首先在编译前我们先把调试信息加到可执行程序当中,使用参数 ...

  4. gcc初步窥探

    由于没有上过Linux编程这门课,所以Linux学得很水啊!!用来用去都是ls -al ; cd .. ;这些渣命令,尤其gcc都不知道什么东西来的,所以先学一下吧. 一.程序的编译过程 对于GUN编 ...

  5. DCOM初步窥探二

    1.COM进程透明性表现在“组件对象和客户程序可以拥有各自的空间,也可以共享同一个进程空间”. COM负责把客户的调用正确传到组件对象中,并保证参数传递的正确性. 组件对象和客户代码不必考虑调用传递的 ...

  6. dcom初步窥探一

    一.问题带入: 从delphi 5开始,有许多人都面临过这样的问题:com应用开发出来并且在本机上运行一切正常,但是一旦分发出去实施远程访问时,就无法正常运行了.我自己有段时间在看到“拒绝访问”错误提 ...

  7. python异步初步窥探

    1.异步之难:因为其执行吮吸不可预料,当下正要发生什么事件不可预料.        程序下一步行为往往依赖上一步值执行结果,如何知晓上次异步调用已完成并获取结果,        回调成了必然选择,那又 ...

  8. Maven整理笔记の初步窥探

    第一部分:引言 Maven是一款跨平台的项目管理工具,作为Apache组织的一个开源项目,主要服务于基于java平台的项目构建.依赖管理和项目信息管理. 项目构建:编译.运行单元测试.生成文档.打包和 ...

  9. git的初步了解

    其实git我也不熟,请两天假回来宿友告诉我,我们有一份高大尚的作业.我问她们才知道原来是让我们以博客的形式写两份作业交上去.git还是我在网上查找到的,才对它有一些的了解. git是一个开源分布式版本 ...

随机推荐

  1. SQL SERVER 导出到Oracle 问题与技巧

    工具: 使用SQL SERVER自带的导入, 导出工具   技巧: 一. 使用Oracle Provider for OLE DB(强制推荐) 1. 速度快 2. 要安装Oracle驱动(Oracle ...

  2. 对drupal的理解【转】

    写本文是想跟刚用drupal的朋友,分享一下心得,国内用drupal的太少了,希望大家能好好交流. 希望几分钟看完后你能马上上手drupal,至少能理解hook,api,theme,module,cc ...

  3. 各大Oj平台介绍

    1.题库与网站资源题库-在线提交系统(Online Judge)简介   下面是几个比较大的在线提交系统(OnlineJudge)里面有大量历年的竞赛题目,注册一个ID,然后用自己熟悉的语言(一般有P ...

  4. FIN_WAIT1 能持续多久?你知道吗

    FIN_WAIT1 能持续多久?你知道吗 2016-01-12 运维帮 原文:http://blogread.cn/it/article/7215?f=wb&luicode=10000359 ...

  5. 数据分页 THINKPHP3.2 分页 三种分页方法

    数据分页 复制本页链接 opensns 通常在数据查询后都会对数据集进行分页操作,ThinkPHP也提供了分页类来对数据分页提供支持. 下面是数据分页的两种示例. 第一种:利用Page类和limit方 ...

  6. ECMAScript5下Array的方法

    声明:ECMAScript不会兼容IE8及以下版本IE浏览器. 一.迭代方法 注:这些迭代方法不会影响数组的值. 每个方法都有两个参数: array.方法(执行函数体,当前作用域(比如this,这个可 ...

  7. 行列有序矩阵求第k大元素

    问题来源:http://www.careercup.com/question?id=6335704 问题描述: Given a N*N Matrix. All rows are sorted, and ...

  8. Android屏幕适应详解(一)

    一.关于布局适配 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如 ...

  9. light oj 1205 - Palindromic Numbers 数位DP

    思路:搜索的时候是从高位到低位,所以一旦遇到非0数字,也就确定了数的长度,这样就知道回文串的中心点. 代码如下: #include<iostream> #include<cstdio ...

  10. 知问前端——创建header区

    创建界面 我们首先要设计一个header,这个区域将要设计成永远置顶.也就是,往下拉出滚动条也永远在页面最上层可视区内.在header区,目前先设计LOGO.搜索框.按钮.注册和登录即可. 项目的大致 ...