[.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-10-24 15:46:44

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

C语言及程序设计进阶例程-14 开发一个电子词典

贺老师教学链接  C语言及程序设计进阶 本课讲解 开发一个电子词典(下载词库点击打开链接) #include <stdio.h> #include<string.h> #include<stdlib.h> //定义词条类 typedef struct { char english[20]; char chinese[30]; char word_class[10]; } Word; Word words[8000]; //将词典数组设置成全局的结构体数组 int wor

Java开发利器ideaIU最新版本10.5的keygen

IDEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手.代码自动提示.重构.J2EE支持.Ant.JUnit.CVS整合.代码审查. 创新的GUI设计等方面的功能可以说是超常的. IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主.主页地址:http://www.jetbrains.com/idea/.感兴趣的可以直接下载最新版本,使用k

PHP 面向对象程序设计(oop)学习笔记 (四) - 异常处理类Exception_php实例

使用异常 PHP5 增加了类似其他语言的异常处理模块.在PHP代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获.需要进行异常处理的代码都必须放入到 try 代码块内,以便捕获可能存在的异常.每个try至少对应一个 catch 块.使用多个 catch 可以捕获不同的类所产生的异常.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行.当然,PHP 允许在 catch 代码块内再次抛出(thr

LNMPS PHP 团队开发 需要用到的相关工具(2016年11月更新)

LNMPS:LINUX+Nginx+Mysql+PHP+elasticsearch+redis 作者:风来了.fox 1.标准化 工具 代码(规范.格式等等) (PSR-2.PSR-4规范) 文档 人员 等等标准化,统一使用一种格式 统一开发环境  lnmp团队开发环境docker http://blog.csdn.net/fenglailea/article/details/53119285 lnmp服务器套件 http://www.lanmps.com/ 2.工具 js框架:Jquery 统

阿里宣布Atlas开源:安卓客户端容器化框架,大规模团队移动开发利器

继Weex之后,阿里在移动技术领域又有开源大动作.   3月13日,手机淘宝安卓客户端容器化框架Atlas正式宣布开源(https://github.com/alibaba/atlas).Atlas由阿里巴巴移动团队自研,以容器化思路解决大规模团队协作问题,实现并行开发.快速迭代和动态部署,适用于Android 4.x以上系统版本的大小型App开发.   Atlas特别适用于大规模团队的协同开发.通过提供组件化.动态性.解耦化的支持,Atlas能够实现每个业务在开发阶段独立编译.独立调试.独立运

C语言及程序设计进阶例程-21 银行储蓄系统(第五版)开发

贺老师教学链接  C语言及程序设计进阶 本课讲解 可以直接下载完整的项目文件bank.zip运行(点击打开链接,解压后打开项目,或者自建项目后加入源文件和头文件) 下面的代码,分别展示各个头文件.源文件:Bank.h #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #define upNum 2000 //系统最多容纳的用户数 struct record { int account; //账号 int password; //密码 char nam

C语言及程序设计进阶例程-39 银行储蓄系统(第六版)开发

[贺老师教学链接]   [C语言及程序设计进阶]   [本课讲解]  bank.h /*注意:运行前要建立空文件account.bin*/ #ifndef BANK_H_INCLUDED #define BANK_H_INCLUDED #include <malloc.h> typedef struct { int account; //账号 int password; //密码 char name[10]; //用户名 double balance; //账户余额 int status; /

PHP开发利器-PRADO 1.6入门与安装

ado   第1章 入门 1.1  PRADO是什么? PRADO是在PHP5环境下的一个基于事件驱动和基于组件的WEB应用开发框架.使用PRADO开发WEB应用,你主要需要做的工作就是使用已有的组件(原文是"实例化已经定义好的组件",熟悉面向对象编程的开发者可能比较容易理解这句话),设置组件的属性,为控件组件的各种事件编写对应的处理函数,然后把这些组织成一个个的页面.(译者注:个人倾向于将component翻译为组件,control翻译为控件,事实上大多数场合两者没有什么区别,但是为

Android零基础入门第13节:Android Studio配置优化,打造开发利器

原文:Android零基础入门第13节:Android Studio配置优化,打造开发利器 是不是很多同学已经有烦恼出现了?电脑配置已经很高了,但是每次运行Android程序的时候就很卡,而且每次安装运行程序都要等待很长时间,如果是在开发后期需要不停的修改代码运行看效果,这必定会影响工作效率. 有什么办法可以改善一下这些问题呢?方法是肯定会有的,接下来通过两期来从两个维度来提高效率.今天首先来优化配置我们的Android Studio开发工具,将一些使用很少但占有内存的插件屏蔽,将影响效率的地方