码农之路恒久远,学习向上是真谛啊!在学习的过程中,相信大家或多或少都接触到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. Codeforces Round #246 (Div. 2)——D题

    KMP算法,没写出来,完全不理解NEXT数组.现在理解了很多 答案都在程序中 ,不过这个思想真的很神奇, 还有毛语不好,一直没看懂题目,现在懂了, 大概是:S中前缀等于后缀,求其长度,和其在S中出现了 ...

  2. 使用CSS3实现3D图片滑块效果

    使用 CSS3 的3D变换特性,我们可以通过让元素在三维空间中变换来实现一些新奇的效果. 这篇文章分享的这款 jQuery 立体图片滑块插件,利用了 3D transforms(变换)属性来实现多种不 ...

  3. 表单很多数据项录入的时候,提交controller发生异常,数据回显。

    1.添加的情况(Model传递Form Data) request.getSession().setAttribute("car", car); //抛出异常的时候,数据回显. 2 ...

  4. 【☆】javascript数据类型拾遗

    一.Array对象 1.两个数组能用< > == ===做比较吗? 答:数组可以用> <进行矩阵比较,比如a=[1,2,3] b=[1,2,4],那么a<b,如果a的数值 ...

  5. JSP 页面传参和接受参数

    <%@ page language="java" contentType="text/html; charset=GBK" pageEncoding=&q ...

  6. Acdream1217 Cracking' RSA(高斯消元)

    题意:给你m个数(m<=100),每个数的素因子仅来自于前t(t<=100)个素数,问这m个数的非空子集里,满足子集里的数的积为完全平方数的有多少个. 一开始就想进去里典型的dp世界观里, ...

  7. HDU 4937 Lucky Number (数学,进制转换)

    题目 参考自博客:http://blog.csdn.net/a601025382s/article/details/38517783 //string &replace(iterator fi ...

  8. CMD窗口正确显示UTF-8字符

     Go语言教程 http://yiibai.com/go/  CMD窗口正确显示UTF-8字符 http://www.360doc.com/content/13/0424/13/2569758_280 ...

  9. Wamp Mysql错误消息 语言设置

    Wamp Mysql错误消息 语言设置 http://my.oschina.net/wandershi/blog/264347 打开my.ini   找到 [wampmysqld] port = 33 ...

  10. POJ 1477

    #include <iostream> #define MAXN 100 using namespace std; int _[MAXN]; int main() { //freopen( ...