初步窥探Git
码农之路恒久远,学习向上是真谛啊!在学习的过程中,相信大家或多或少都接触到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的更多相关文章
- 初步安装git使用命令配置电脑中的git关联的账户
原文地址 https://www.jianshu.com/p/39684a3ad4fa 出现问题 当我们初步使用git的时候,会报一些出乎预料的错误,比如:报错:fatal: unable to au ...
- Git 系列(二):初步了解 Git
在这个系列的介绍篇中,我们学习到了谁应该使用 Git,以及 Git 是用来做什么的.今天,我们将学习如何克隆公共 Git 仓库,以及如何提取出独立的文件而不用克隆整个仓库. 由于 Git 如此流行,因 ...
- gdb初步窥探
本文是通过学习左耳朵皓帝的文章,详见:http://blog.csdn.net/haoel 1.使用gdb gdb主要是用来调试c和c++程序,首先在编译前我们先把调试信息加到可执行程序当中,使用参数 ...
- gcc初步窥探
由于没有上过Linux编程这门课,所以Linux学得很水啊!!用来用去都是ls -al ; cd .. ;这些渣命令,尤其gcc都不知道什么东西来的,所以先学一下吧. 一.程序的编译过程 对于GUN编 ...
- DCOM初步窥探二
1.COM进程透明性表现在“组件对象和客户程序可以拥有各自的空间,也可以共享同一个进程空间”. COM负责把客户的调用正确传到组件对象中,并保证参数传递的正确性. 组件对象和客户代码不必考虑调用传递的 ...
- dcom初步窥探一
一.问题带入: 从delphi 5开始,有许多人都面临过这样的问题:com应用开发出来并且在本机上运行一切正常,但是一旦分发出去实施远程访问时,就无法正常运行了.我自己有段时间在看到“拒绝访问”错误提 ...
- python异步初步窥探
1.异步之难:因为其执行吮吸不可预料,当下正要发生什么事件不可预料. 程序下一步行为往往依赖上一步值执行结果,如何知晓上次异步调用已完成并获取结果, 回调成了必然选择,那又 ...
- Maven整理笔记の初步窥探
第一部分:引言 Maven是一款跨平台的项目管理工具,作为Apache组织的一个开源项目,主要服务于基于java平台的项目构建.依赖管理和项目信息管理. 项目构建:编译.运行单元测试.生成文档.打包和 ...
- git的初步了解
其实git我也不熟,请两天假回来宿友告诉我,我们有一份高大尚的作业.我问她们才知道原来是让我们以博客的形式写两份作业交上去.git还是我在网上查找到的,才对它有一些的了解. git是一个开源分布式版本 ...
随机推荐
- 【ASP.Net MVC】AspNet Mvc一些总结
AspNet Mvc一些总结 RestaurantReview.cs using System; using System.Collections.Generic; using System.Comp ...
- Git常用命令大全
查看.添加.提交.删除.找回,重置修改文件 git help <command> # 显示command的help git show # 显示某次提交的内容 git show $id gi ...
- ajax 技术和原理分析
ajax所包含的技术 大家都知道ajax并非一种新的技术,而是几种原有技术的结合体.它由下列技术组合而成. 1.使用CSS和XHTML来表示. 2. 使用DOM模型来交互和动态显示. 3.使用XMLH ...
- 游戏引擎网络开发者的 64 做与不做 | Part 1 | 客户端方面
摘要:纵观过去 10 年的游戏领域,单机向网络发展已成为一个非常大的趋势.然而,为游戏添加网络支持的过程中往往存在着大量挑战,这里将为大家揭示游戏引擎网络开发者的 64 个做与不做. [编者按]时下, ...
- 使用tomcat7创建异步servlet
该篇文章翻译自:http://developerlife.com/tutorials/?p=1437 一.简介 Servlet API 3.0 之前,需要使用类似Comet的方式来实现创建异步的Ser ...
- iOS block示例
// // block.h // Block // // Created by tqh on 15/4/12. // Copyright (c) 2015年 tqh. All rights reser ...
- ios开发之AppDelegate
创建应用程序之后之后,默认有AppDelegate.h文件与AppDelegate.m文件. AppDelegate为何物? AppDelegate为整个应用的一个代理,提供程序启动.退出等类似 ...
- UVA 10341 二分搜索
Solve the equation:p ∗ e−x + q ∗ sin(x) + r ∗ cos(x) + s ∗ tan(x) + t ∗ x2 + u = 0where 0 ≤ x ≤ 1.In ...
- 浅说Java中的反射机制(一)
在学习传智播客李勇老师的JDBC系列时,会出现反射的概念,由于又是第一次见,不免感到陌生.所以再次在博客园找到一篇文章,先记录如下: 引用自java中的反射机制,作者bingoideas.(()为我手 ...
- Jenkins配置基于角色的项目权限管理--转
本文将介绍如何配置jenkins,使其可以支持基于角色的项目权限管理. 由于jenkins默认的权限管理体系不支持用户组或角色的配置,因此需要安装第三发插件来支持角色的配置,本文将使用Role Str ...