Git教程
Git标签管理
Git分支
Git操作
Git应用
GitHub应用
IDEA对于Git&GitHub的支持
Git与GitHub使用注意事项

Git教程

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。

Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。

Git官方网址是:https://git-scm.com/ ,打开后如下图所示:

本教程将介绍如何在分布式环境中使用 Git 进行项目版本控制,同时在基于Web和非基于Web的应用程序开发中工作。

面向读者

本教程是为那些希望学习 Git 版本控制系统技能的程序员和专业人士而设计和编写的。本教程还可以作为从零开始学习 Git 版本控制系统的入门教程。本教程将一步一步地演示和帮助初学者学习 Git 版本控制系统的基本功能。在完成本教程学习之后,您会发现自己在使用 Git 版本控制系统方面具有一定的专业知识,并能熟悉操作和使用 Git 工具。

前提条件

我们假设您将使用 Git 版本控制系统来处理各种Java或其它软件开发的项目。因此,如果您的软件开发生命周期可在一定程度曝光,或开发基于Web和非基于Web的应用程序的工作文档,这将有利于学习和理解使用 Git 版本控制系统 。

在学习Git需要清楚的几个术语

Workspace:工作区

Index/Stage:暂存区,也叫索引

Repository:仓库区(或本地仓库),也存储库

Remote:远程仓库

1. 有关几个名词解释
工作区: 通过git init创建的代码库的所有文件但是不包括.git文件(版本库)

暂存区: 通过git add ./*/*Xxx/Xxxx* 添加的修改,都是进入到暂存区了,肉眼不可见 通过 git status 可以看到修改的状态。

2. 什么是修改?

比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

特点

分布式相比于集中式的最大区别在于开发者可以提交到本地,每个开发者通过克隆(git clone),在本地机器上拷贝一个完整的Git仓库。

下图是经典的git开发过程。

● Git的功能特性:

从一般开发者的角度来看,git有以下功能:

⒈从服务器上克隆完整的Git仓库(包括代码和版本信息)到单机上。

⒉在自己的机器上根据不同的开发目的,创建分支,修改代码。

⒊在单机上自己创建的分支上提交代码。

⒋在单机上合并分支。

⒌把服务器上最新版的代码fetch下来,然后跟自己的主分支合并。

⒍生成补丁(patch),把补丁发送给主开发者。

⒎看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。

⒏一般开发者之间解决冲突的方法,开发者之间可以使用pull 命令解决冲突,解决完冲突之后再向主开发者提交补丁。

从主开发者的角度(假设主开发者不用开发代码)看,git有以下功能:

⒈查看邮件或者通过其它方式查看一般开发者的提交状态。

⒉打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。

⒊向公共服务器提交结果,然后通知所有开发人员。

● Git优点

⒈适合分布式开发,强调个体。

⒉公共服务器压力和数据量都不会太大。

⒊速度快、灵活。

⒋任意两个开发者之间可以很容易的解决冲突。

⒌离线工作。

● Git缺点

⒈资料少(起码中文资料很少)。

⒉学习周期相对而言比较长。

⒊不符合常规思维。

⒋代码保密性差,一旦开发者把整个库克隆下来就可以完全公开所有代码和版本信息。

介绍

Git --- The stupid content tracker, 傻瓜内容跟踪器。Linus Torvalds 是这样给我们介绍 Git 的。

Git 是用于 Linux内核开发的版本控制工具。与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持(wingeddevil注:这得分是用什么样的服务端,使用http协议或者git协议等不太一样。并且在push和pull的时候和服务器端还是有交互的。),使源代码的发布和交流极其方便。 Git 的速度很快,这对于诸如 Linux kernel 这样的大项目来说自然很重要。 Git 最为出色的是它的合并跟踪(merge tracing)能力。

实际上内核开发团队决定开始开发和使用 Git 来作为内核开发的版本控制系统的时候,世界开源社群的反对声音不少,最大的理由是 Git 太艰涩难懂,从 Git 的内部工作机制来说,的确是这样。但是随着开发的深入,Git 的正常使用都由一些友好的脚本命令来执行,使 Git 变得非常好用,即使是用来管理我们自己的开发项目,Git 都是一个友好,有力的工具。现在,越来越多的著名项目采用 Git 来管理项目开发.

作为开源自由原教旨主义项目,Git 没有对版本库的浏览和修改做任何的权限限制。

目前GIT已经可以在windows下使用,主要方法有二:msysgit和Cygwin。Cygwin和Linux使用方法类似,Windows版本的GIT提供了友好的GUI(图形界面),安装后很快可以上手,不在此做大篇幅介绍。

本文将以 Git 官方文档 Tutorial, core-tutorial 和 Everyday GIT 作为蓝本翻译整理,但是暂时去掉了对 Git 内部工作机制的阐述,力求简明扼要,并加入了作者使用 Git 的过程中的一些心得体会,注意事项,以及更多的例子。建议你最好通过你所使用的 Unix / Linux 发行版的安装包来安装 Git, 你可以在线浏览本文 ,也可以通过下面的命令来得到本文最新的版本库,并且通过后面的学习用 Git 作为工具参加到本文的创作中来。

(Snake.Zero 注:以下假设环境为Unix/Linux,本次修正主要是版本问题,git-add git-init-db等命令都改为了类似git add形式的,以免误导新手。)

版本

原始发行日期 最新版本 发布日期
0.99 2005/7/11 0.99.9n 2005/12/15
1.0 2005/12/21 1.0.13 2006/1/27
1.1 2006/1/8 1.1.6 2006/1/30
1.2 2006/2/12 1.2.6 2006/4/8
1.3 2006/4/18 1.3.3 2006/5/16
1.4 2006/6/10 1.4.4.5 2008/7/16
1.5 2007/2/14 1.5.6.6 2008/12/17
1.6 2008/8/17 1.6.6.3 2010/12/15
1.7 2010/2/13 1.7.12.4 2012/10/17
1.8 2012年10月21日 1.8.5.6 2014年12月17日
1.9 2014年2月14日 1.9.5 2014年12月17日
2 2014年5月28日 2.0.5 2014年12月17日
2.1 2014年8月16日 2.1.4 2014年12月17日
2.2 2014年11月26日 2.2.3 2015年9月4日
2.3 2015年2月5日 2.3.10 2015年9月29日
2.4 2015年4月30日 2.4.11 2016年3月17日
2.5 2015年7月27日 2.5.5 2016年3月17日
2.6 2015年9月28日 2.6.6 2016年3月17日
2.7 2015年10月4日 2.7.4 2016年3月17日
2.8 2016年3月28日 2.8.4 2016年6月6日
2.9 2016年6月13日 2.9.3 2016年8月12日
2.1 2016年9月2日 2.1 2016年9月2日
2.13.3 2017年7月12日 2.13.3 2017年7月12日
全部教程