Git Step by Step – (1) Git 简介

由于工作的需要,代码版本控制工具要从Perforce换成Git。说实话,刚开始真的很不适应,要从一个可以很好的支持用户界面的工具转到一个命令行工具,而且Git中有几百个命令,一下子就傻眼了。

但是经过一段时间的使用和熟悉,已经慢慢适应了。所有准备一个整理一个Git使用系列,是对自己使用Git的一个总结,也希望可以对同样刚开始使用Git的同学一些帮助。下面就开始探索Git了。

Git简介

Git是Linus用C实现的一个分布式版本控制工具,注意这里对分布式的强调。不同于Git,像Perforce、SVN和CVS这类版本控制工具都是集中式的。

下面大概介绍下集中式版本控制工具和分布式版本控制工具的区别。

集中式

所谓集中式的版本控制,就是在一个系统中只有一个机器是服务端,其他机器全是客户端。

以Perforce版本控制为例,在一个系统中会有一个Perforce服务器,所有的代码以及版本信息都保存在这个服务器上。每个客户端可以从服务器get下来一份代码,然后在本地修改,最后submit修改的代码。

可以看到集中式的版本控制还是有一些问题的:

  • 网络依赖性强,工作环境保持网络连接,如果网络断掉了,所有的客户端就无法工作了。
  • 安全性较弱,所有的代码以及版本信息保存在服务器中,一旦服务器挂掉了,代码和版本控制信息就丢失了。

分布式

而在分布式版本控制系统中,没有服务端/客户端的概念,每台机器都是一个服务器。也就是说,在分布式本版控制系统中,每台机器都有一份代码,并且有代码的版本信息。

所以可以看到Git的优势:

  • 每台机器都是一台服务器,无需依赖网络就可以帮自己的更新提交到本地服务器,支持离线工作。当有网络环境的时候,就可以把更新推送给其他服务器。
  • 安全性高,每台机器都有代码以及版本信息的维护,所有即使某些机器挂掉了,代码依然是安全的。

在Git中,同步更新的方式有很多种,可以把自己的更新推送给别人;也可以生成一个diff的patch,通过邮件方式把这个patch发送给别人。这些都将会在后面的文章中介绍。

建议:虽然分布式版本控制没有服务端的概念,但一般在一个Git系统中,为了方便大家交换更新,会找一台机器作为中心服务器,这台机器的目地只是为了方便大家交换更新。即使这台中心服务器挂了,大家依然可以继续工作,只是相互之间交换更新比较麻烦。

Git安装

Git刚开始只能支持Linux和Unix环境,后来才慢慢的支持Windows系统。

由于我主要是在Windows环境下工作,所以下面就主要介绍Windows上面安装Git。一般在Windows下使用Linux/Unix的工具时,需要Cygwin这样的模拟环境。但是已经有人把模拟环境和Git打包好了,msysgit是Windows版的Git,从这里下载,然后按默认选项安装即可。

安装完成后,在开始菜单里找到"Git"->"Git Bash",弹出一个命令行窗口,就说明Git安装成功!

安装完成后,一般都会对本机的Git进行一些基本的配置。下面的命令就是给Git环境配置全局的用户名和邮箱地址,这样每一个从这台机器上提交的更新都会标上这些用户信息。

git config --global user.name “your user name”
git config --global user.email “your email address” 

Git命令流

在Git中支持上百个命令,每个命令又有很多的选项,所以初学者看到这些就会有一些恐惧。

其实,真正接触过Git一段时间后,会慢慢的发现我们会经常使用的命令也就十几二十个,掌握了这些命令之后就可以满足我们大部分的日常工作了。

下面是我根据日常使用整理的一个Git命令流图,包括了一些常用的命令,可以方便自己查阅。

不要被密密麻麻的箭头吓到,其实都是比较初级、常用的命令,后面的文章会详细介绍图中命令的用法以及Git中的一些基本概念。注意,图中没有涉及branch、patch等信息,但是后面的文章会进行介绍。

最后,附上Git命令图的Visio的源文件,感兴趣的同学也可以做一个,方便查阅,或者在这个基础上重新定制一个。

git.zip

时间: 2024-08-24 17:29:26

Git Step by Step – (1) Git 简介的相关文章

Git Step by Step – (8) Git的merge和rebase

前面一篇文章中提到了"git pull"等价于"git fetch"加上"git merge",然后还提到了pull命令支持rebase模式,这篇文章就介绍一下merge和rebase之间有什么差别. 由于我们主要是想看看merge跟rebase之间的区别,这里就是用本地仓库的分支进行演示了. merge 其实在介绍分支的那篇文章中已经介绍过了一些分支merge的内容,这里就进行一些补充和总结. 下面我们基于本地一个仓库开始介绍,当前仓库的分支情

Git Step by Step – (6) Git远程仓库

前面文章中出现的所有Git操作都是基于本地仓库的,但是日常工作中需要多人合作,不可能一直都在自己的代码仓库工作.所以,这里我们就开始介绍Git远程仓库. 在Git系统中,用户可以通过push/pull命令来推送/获取别的开发人员的更新,当时对于一个工作组来说,这种方式会效率比较低.所以,在一个Git系统中,都会有一个中心服务器,大家都通过中心服务器来推送/获取更新. 为了方便本篇例子的进行,我就使用多个目录来模拟多个用户以及中心服务器,这样就不用搭建Git服务器了. 中心服务器:C:\VM\Ce

Git Step by Step – (5) Git分支(branch)

在前面两盘文章中介绍了Git的基本原理,都是理论知识.这篇文章我们再次回到实践中,看看Git分支(branch)的使用. 在代码版本控制工具中,都会有branch的概念.刚开始建立版本仓库的时候,我们只有一个主分支(master branch),我们不可能把日常的新功能开发.代码优化以及bug修复等概念工作全都放在主分支上,这样会使主分支很难维护.这就是为什么会有branch. 分支的创建及删除 分支的创建 在Git中,branch的创建很简单,我们可以通过下面的命令创建一个"release-1

Git Step by Step – (4) 探索.git目录

前面一篇文章介绍了Git对象模型,接下来我们就进入".git"目录看看到底有什么东西,目录中哪些东西又跟Git对象模型相关.结合这个目录,我们将进一步了解Git的工作原理. .git目录 下面就开始进入.git目录了,通过"ls"命令可以看到.git目录中的文件和子目录: 对于这些文件和目录,下面给出了一些基本的描述.在后面后有logs.objects.refs.index和HEAD更详细的介绍 (D) hooks:这个目录存放一些shell脚本,可以设置特定的gi

Git Step by Step – (7) Git远程仓库(续)

上一篇文章介绍了Git远程仓库的一些使用,但是还是有些东西需要补充一下,所以有了这个续篇. .gitignore 前一篇中,我们介绍了Git的patch功能,当我们生成patch之后,"git status"就会显示patch文件是"Untracked files".当然,我们也没有必要去跟踪这个patch文件. 同样,项目中可能会经常生成一些Git系统不需要追踪(track)的文件,在编译生成过程中 产生的文件或是编程器生成的临时备份文件.我们可以在使用"

Git Step by Step – (3) Git对象模型

前面一篇文章介绍了本地仓库的一系列操作,下面我们将进一步了解Git的工作原理,介绍Git对象模型. 刚开始使用Git的时候,对Git对象模型.工作原理并不理解,但是经过一段时间的使用.熟悉之后,然后再来理解这些内容就比较容易了. 下面开始介绍Git对象,然后通过一个实例展示Git对象模型. Git对象 在Git系统中有四种类型的对象,所有的Git操作都是基于这四种类型的对象. "blob":这种对象用来保存文件的内容. "tree":可以理解成一个对象关系树,它管理

Git Step by Step – (2) 本地Repo

前面一篇文章简单介绍了Git,并前在Windows平台上搭建了Git环境,现在就正式的Git使用了. Git基本概念 在开始Git的使用之前,需要先介绍一些概念,通过这些概念对Git有些基本的认识,这将会对我们后面的操作有很大的帮助. 在Git中,每个版本库都叫做一个仓库(repository),每个仓库可以简单理解成一个目录,这个目录里面的所有文件都通过Git来实现版本管理,Git都能跟踪并记录在该目录中发生的所有更新. 现在我们已经知道什么是repository(缩写repo)了,假如我们现

Git学习:版本控制、Git简介与安装

1.什么是版本控制(Version Control) 2.Git简介 3.Git的安装 3.1 Linux环境下安装Git 3.2 Windows环境下安装Git 1.什么是版本控制(Version Control) 如果你长期使用过某个软件,或者长期玩过某款游戏,那你就应该听说过“版本”一词,甚至遇到过软件版本的更新,比如腾讯QQ最新版是9.1.6版本,英雄联盟最新版是9.14版本.从用户的角度来说,软件的版本往往是越新越好,因为越新的版本一般意味着更多的功能.更好的界面以及更少的BUG.但是

FreeSWITCH 1.2.5.3 Step by Step Install

Ubuntu: apt-get -y install build-essential automake autoconf git-core wget libtool apt-get -y install libncurses5-dev libtiff-dev libjpeg-dev zlib1g-dev 从 Git 仓库安装: 从代码库安装能让你永远使用最新的版本: git clone git://git.freeswitch.org/freeswitch.git cd freeswitch .

Git专题--系统的学习Git之二

本文为整理自:伯乐在线 1.Git详解之一:Git起步 2.Git详解之二:Git基础 3.Git详解之三:Git分支 4.Git详解之四:服务器上的Git 5.Git详解之五:分布式Git 6.Git详解之六:Git工具 7.Git详解之七:自定义Git 8.Git详解之八:Git与其他系统 9.Git详解之九:Git内部原理 Git详解之四:服务器上的Git 服务器上的 Git 到目前为止,你应该已经学会了使用 Git 来完成日常工作.然而,如果想与他人合作,还需要一个远程的 Git 仓库.