[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】

转自:http://www.cnblogs.com/yubinfeng/p/5182271.html

前面介绍了两款代码管理工具VSS和SVN,这两种管理工具在很长一段时间曾为我们的代码管理提供了便利,本篇介绍一款思维方式完全不同(也可以说不合常理)的版本控制系统——Git。可以说Git目前非常火,这与设计者剑指偏锋的设计思想有很大关系。Git采用发散的思维管理代码,最大的特点就是分布式,他可以让来自不同地区的开发者共同完成一个作品,让每个开发者都可以发挥个性,同时又可以由发起者(即项目管理者)统一发布新版本。各个地区的开发者,还可以离线开发,这样版本管理系统之所以火,也和当今社会万众创新的氛围分不开。通过Git你可以尽情的发挥想象力,开源的春天已经到来,让我们启航吧!

 1. Git简介

名称:Git (Git的读音为/g?t/,开源、免费、分布式的版本控制系统)

厂商:Linux 的缔造者 Torvalds 发起,为了更适合开源项目而设计,最初为Linux 版本,现已可以在Linux,Unix,Max,Windows各种系统中使用

功能:分布式版本控制、元数据方式存储而非文件方式、GIT的内容存储使用的是SHA-1哈希算法能确保代码内容的完整性等,太多了让我们慢慢挖掘。

优点:

(1)分布式:说起优点,大多都是相对其它管理工作比如SVN等,最大的优点就是分布式,最大化开发个性;

(2)轻负载:因为强化个体并且使用元数据存储而非文件形式,公用服务器压力较小;

(3)高性能:能快速处理分支,合并简单快捷;并且分个分支的冲突解决非常方便。

(4)完整性:在保存到 Git 之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。如果文件在传输时变得不完整,或者磁盘损坏导致文件数据缺失,Git 都能立即察觉。

(5)离线式:离线工作是Git一个重要特点,这种模式在以前独占式的版本控制的年代,是无法想象的。

(6)还有很多……

缺点:说起缺点,就现有的几种版本控制系统相比较,几乎找不出明显缺点,唯一明显的就是代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息,这也是作者在设计之初的目标,以开源共享的大同世界为目标。再要说缺点为就是主观方面的,比较学习难度稍大点(这个不要怕,后面会慢慢介绍),整个使用过程比较不符合常规思维(这个也不要怕,总要推陈出新的嘛 )。

升级:开源项目,管理规范,升级及时。

推荐:★★★★★ (从小型到大型项目均适用,小到小小的代码片段,大到Android、facebook、PHP、spring、mybatis等等)

2. Git基础

Git虽然这么多优势,但大多教程中都使用命令方式操作,这让初学者望而却步,本篇尽量使用图形化界面介绍。

Git是一个全新思维的版本控制系统,如果你之前使用VSS,CVS,SVN等工具,那么你一定不要把相似的概念作对比,最好忘记以前的合并、分支之些具体实现模式。(这点慢慢展开)

Git的近乎所有操作都在本地进行,即离线式。不论你在何地,都可以投入开发之中,那么如何控制版本,这点不要担心,在你网络方便的时候上传更改即可。

Git在上传数据时进行一系统计算,最小化的数据传输,若文件没有变化,Git 不会再次保存,而只对上次保存的快照作一链接。

Git拥有较高的可靠性,只要你养成定期推送的习惯,你可以随意在本地计算机上做实验,不用担心弄丢数据,数据如何恢复,后面会慢慢介绍。

Git的文件有三种状态:已提交(committed),已修改(modified)和已暂存(staged)。已提交表示该文件已经被安全地保存在本地数据库 中了;已修改表示修改了某个文件,但还没有提交保存;已暂存表示把已修改的文件放在下次提交时要保存的清单中。

Git直接记录快照,而非差异比较。Git 和其他版本控制系统的主要差别在于,Git 只关心文件数据的整体是否发生变化,而大多数其他系统则只关心文件内容的具体差异。

如果没有理解,没关系,慢慢来。

3. Git 基本工作流程

(1). 在工作目录中修改某些文件。

(2). 对修改后的文件进行快照,然后保存到暂存区域。

(3). 提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

因此,我们可以从文件所处的位置来判断状态:如果是 Git 目录中保存着的特定版本文件,就属于已提交状态;

如果作了修改并已放入暂存区域,就属于已暂存状态;

如果自上次取出后,作了修改但还没有放到暂存区域,就 是已修改状态。

后面我们会进一步了解其中细节,并学会如何根据文件状态实施后续操作,以及怎样跳过暂存直接提交。

4.Git的安装前准备

4.1 安装包简介

终于进入到激动人心的时刻了,通过上面的介绍,看着很神秘的东东,马上就要进入我们的视野中了。

在本系列文章中,我只介绍如何在Windows系统下安装Git(虽说Windows下使用多Linux/Unix工具需要模拟环境,带来很多不便,但是国内大多同学还是使用Windows),其他操作系统的同学请参照其他文章。

服务器端工具:

Git 官方的服务端 需要使用命令行创建版本库等操作。

gitstack 第三方开源服务器端,专为Windows订制,集成了较成熟悉版本的Git,并且Web方式的操作界面,无需指令。

客户端工具如下:

TortoiseGit (TortoiseSVN的兄弟)图形化界面做的最好的Git客户端

Git Extensions (Visual Studio 2013/2015集成的Git客户端)让您不使用命令行控制的 Git 的图形化客户端

git-cola 是一个Python开发的时尚和强大的git图形用户界面

EGit - (Java开发者Git客户端插件)利用EGit可以在 Eclipse中实现分行,合并,复制和同步库

还有很多,我们会重点介绍TortoiseGit 和 Git Extensions

4.2  安装包下载

我们下载Windows环境下我们所需的安装包

(1)服务器端

对于服务器端环境配置这方面,网上现有的资料并不是很多,特别是在Windows环境下的服务器搭建

喜欢使用Git原生版本的同学,请参照下面几篇文章:

Windows+Git+COPSSH 方式,URL:http://blog.csdn.net/aaron_luchen/article/details/10498181   http://blog.csdn.net/code_style/article/details/38764203

对于Git命令行方式操作比较全的资料,URL:http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

顺便赋上Git官方的下载地址

Git服务器端Windows版本安装包 (包含32位和64位,根据你的服务器操作系统选择)

Git-2.7.0.2-64-bit.exe

官网URL:http://git-scm.com/download/win

(注意:我们下面将要使用的服务器端环境并不需要下载原版)

不过COPSSH也不是免费的,并且上面的环境下还需要使用一些命令来完成部分操作(我并不是歧视使用命令行的方式操作,首先这是一个入门文章,力求简单,再者服务器端的搭建使用Linux更合适)

下面,我在本篇文章中为了让大家尽快用上Git,我们也剑走偏锋使用第三方纯界面的服务器端gitstack ,他集成了Git,因此我们的安装下载,并不需要专门下载Git服务器端了

因为集成了apache和Git,这个安装包有点大126M,耐心下载吧

准备下载的第一个安装包:

gitstack 开源集成Git的界面服务器端

官网URL:http://gitstack.com/download/

下载过程如下图:

(2)客户端

TortoiseGit安装包 和 中文语言包(包含32位和64位,根据你的客户端操作系统选择,我以64位为例介绍)

官方URL:http://tortoisegit.org/download/ 

TortoiseGit-1.8.16.0-64bit.msi

TortoiseGit-LanguagePack-1.8.16.0-64bit-zh_CN.msi

下载过程如下图:

下载完成的三个安装包如下:

5. 服务器端安装

准备工作就绪,我们开始安装服务器端,双击 GitStack_2.3.8.exe

注意:此时,如果有这个提示,我们就需要暂时关闭占用80端口的服务了,怎么关闭呢,先找到什么服务占用了80

运行,CMD,输入netstat -aon|findstr "80" 查找到 占用80的程序的PID

然后在任务管理中,找到 停止即可

然后一路安装完成,会自动打开管理界面

默认用户和密码admin登录

这个界面是多么熟悉啊,和SVN相似,创建 版本库 、创建组、创建用户、设置

到此我们服务器的安装就完成了,使用GitStack创建基于Windows服务器端就是这么简单。下面我们介绍它的使用。

5. Git服务器端GitStack的使用

GitStack的使用非常简单,和SVN服务端没多大区别,先看一下设置

完成设置后,我们创建一个版本库和一个组及2个用户

将2用户加入该组

接下来,我们给版本库授权组MyGitGroup,于是,这两个用户就拥有该版本库的操作权

先创建一个版本库 MyGitObject,并配授权组或用户(这里我们授权组,就拥有该组下的两个用户了)

将刚才建的 组  MyGitGroup加入该版本库

设置组的读写权限

到此服务端的配置完成,我们可以看到 ,在设置的版本库目录中,多了一个我们刚创建的版本库文件夹 MyGitObject.git

喜欢使用命令行的同学,仍然可以在这里打开操作 ,可以看到 GitStack的唯一作用,就是帮我们提供了一个http服务+一个界面化配置而且,我们的核心还是Git

 6.Git客户端的安装

客户端工具众多,我们选择前面已经下载好的“小乌龟”

找到前面下载好的TortoiseGit安装包和语言包

安装客户端开始

全程下一步,完工,然后安装语言包(喜欢英文版的可以完工了)

语言包,下一步,完成!

语言包安装完成后,我们在开始菜单中找到 TortoiseGit的设置

选择语言为:简体中文

客户完工!@!

7.Git客户端TortoiseGit的使用

继续介绍TortoiseGit的使用

 7.1 获取服务器版本库

先在本地计算机创建一个Git的工作目录 F:\GitWorkArea

打开目录在空白处右击,可以看到 TortoiseGit的菜单,初始操作可以选择Git克隆,即获取服务端版本库,也可以选择创建一个新的版本库

因为之前我们在服务端已经创建过了一个版本库,我们选择 克隆。

在这里URL我们输入 ,之前服务器端创建的版本库地址,点确定后,这时需要我们认证一下用户和密码,这是必须的嘛 ,不然谁都可以克隆我们的版本了

用户和密码验证完成后,版本库克隆成功。

7.2 创建新文件

接下来,必须是迫不及待的创建一个文件,开始我们的Git之旅了

随便写点什么,然后保存,关闭。

7.3 提交

提交我们新建的文件到版本库,非常简单,在工作目空白处右击

然后点击,提交 到 master

这时,会有一个提示,需要设置一个交互的mail

在弹出的设置上,完成后确定

然后填写备注,记得养成良好的使用习惯,提交要写备注哦,然后选中文件,确定

提交完成~

7.4 查看变更日志

查看日志前,我们在工作内再次创建一个文件,提交;然后再次打开该文件,修改一下内容提交。

在工作目录右击 选择 TortoiseGit ,打开“显示日志”

在日志窗口,我们可以看到三次变更的备注等信息,非常全面

先到这里吧,不知不觉凌晨4点了,关于TortoiseGit的使用会让你不断惊喜的,下篇会继续介绍分支的建立,分支间的灵活切换,合并等等非常实用的功能。

8.本节要点:

本节内容比较多,首先让我们对Git这一版本控制系统有了一个初步的认识,为了避免许多文章中一入手就是各种命令行,让初学者望而却步。我选择了从一个最简单的服务器环境配置入手,即GitStack来创建Windows下的Git服务器端,随后介绍了我们熟悉的"小乌龟"版本的客户端工具,即TortoiseGit的安装及基本使用。下节更多实用的功能等着我们。

如果喜欢我的博文 ,记得点赞哦,也可以加QQ群交流,群号:467189533

时间: 2024-12-25 11:21:17

[.net 面向对象程序设计进阶] (25) 团队开发利器(四)分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境【转】的相关文章

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit

[.net 面向对象程序设计进阶] (26) 团队开发利器(五)分布式版本控制系统Git——图形化Git客户端工具TortoiseGit 读前必备: 接上篇: 分布式版本控制系统Git——使用GitStack+TortoiseGit 图形界面搭建Git环境 http://www.cnblogs.com/yubinfeng/p/5182271.html 本篇导读: 上篇介绍了一款Windows环境下的Git服务器工具GitStack ,搭建了最简单的Windows下的Git服务器,需要再次提醒的是

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上)

[.net 面向对象程序设计进阶] (23) 团队开发利器(二)优秀的版本控制工具SVN(上) 本篇导读: 上篇介绍了常用的代码管理工具VSS,看了一下评论,很多同学深恶痛绝,有的甚至因为公司使用VSS离职的.其实使用什么代码管理工具要看项目而定.毕竟使用何用代码管理工具,是项目管理者根据需要来决定的,如果你是一个开发人员,首先要让自己的技术精进一点.下面根据我个人理解,把这几种常见的代码管理工具使用场景简单介绍一下. 1.几种代理管理工具的适用场景 A.如果你的项目是5-6人的小团队,那么使用

[.net 面向对象程序设计进阶] (1) 开篇

[.net 面向对象程序设计进阶] (1) 开篇 上一系列文章<.net 面向对象编程基础>写完后,很多小伙伴们希望我有时间再写一点进阶的文章,于是有了这个系列文章.这一系列的文章中, 对于.net 基础的一些知识,推荐小伙伴们阅读一下我上一系列文章<.net 面向对象编程基础> ,也就是说本篇文章在阅读前,最好是掌握了.net 的基础知识. 首先,“.net 面向对象程序设计进阶”这一系列的文章涉及的范围比较广,每一节相当于.net的一个分支,基本可以作为一个独立的课题了.只所以

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类

[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) JSON序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能不了解Json.net(Newtonsoft.Json)这款世界级的开源类库,除了拥有良好的性能之外,功能也是非常强大的. 本节会详细说明这个类库.此外,对于不喜欢使用第三方类库的同学,会整理一个基于微软类库的通用Json类. 读前必备: 本节主要介绍一款第三方类库和一个自己整理封装的类库,说起到封装

[.net&#160;面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化

[.net 面向对象程序设计进阶]  (9)  序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对象转向其他数据格式的过程,即序列化(Serialization). 与之相反的过程就是反序列化(Deserialization).掌握和利用好序列化和反序列化的方法,对提高面向编程技术很有益处. 读前必备: A.类和类的实例  [.net 面向对象编程基础]  (9) 类和类的实例  B.类的成员

[.net 面向对象程序设计进阶] (2) 正则表达式 (二)

[.net 面向对象程序设计进阶] (2) 正则表达式 (二) 上一节我们说到了C#使用正则表达式的几种方法(Replace,Match,Matches,IsMatch,Split等),还有正则表达式的几种元字符及其应用实例,这些都是学习正则表达式的基础.本节,我们继续深入学习表达式的几种复杂的用法. 1.分组 用小括号来指定子表达式(也叫做分组) 我们通过前一节的学习,知道了重复单个字符,只需要在字符后面加上限定符就可以了, 比如 a{5},如果要重复多个字符,就要使用小括号分组,然后在后面加

[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口IXmlSerializable实现XML序列化及XML通用类

[.net 面向对象程序设计进阶] (11) 序列化(Serialization)(三) 通过接口IXmlSerializable实现XML序列化及XML通用类 本节导读:本节主要介绍通过序列化接口IXmlSerializable实现XML序列化和反序列化,整理了XML基础操作及序列化的通用类(包括XML及节点的基础读写操作,XML到DataSet\DataTable互转换操作,XML序列化及反序列化通用方法等). 读前必备: A.类和类的实例 [.net 面向对象编程基础]  (9) 类和类的

[.net 面向对象程序设计进阶] (2) 正则表达式(一)

[.net 面向对象程序设计进阶] (2) 正则表达式(一) 1.什么是正则表达式? 1.1正则表达式概念 正则表达式,又称正则表示法,英文名:Regular Expression(简写为regex.regexp或RE),是计算机科学的一个重要概念.他是用一种数学算法来解决计算机程序中的文本检索.区配等问题. 1.2正则表达式语言支持  正则表达式其实与语言无关,在很多语言中都提供了支持 ,包括最常用的脚本语言Javascript.当然C#语言也毫不例外的提供了很好的支持.     正则表达式语

[.net 面向对象程序设计进阶] (19) 异步(Asynchronous ) 使用异步创建快速响应和可伸缩性的应用程序

[.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序 本节导读: 本节主要说明使用异步进行程序设计的优缺点及如何通过异步编程. 使用传统方法BeginInvoke / EndInvoke来实现异步. 使用async/await 创建异步方法和事件. 通过异步编程创建具有快速响应和可伸缩性的应用程序. 读前必备: A.委托 [.net 面向对象编程基础]  (21) 委托 B.事件 [.net 面向对象编程基础] (22)事件 1