Git--使用1

Linux项目开始后,绝大多数的Linux内核维护工做都花在了提交补丁和保存归档的繁杂事物上(1991——2002年间)。到2002年,整个项目组开始启用分布式版本控制系统BitKeeper来管理和维护代码。到2005年的时候,开发BitKeeper的商业公司同Linux内核开发社区的合做关系结束,他们收回了无偿使用BitKeeper的权力。这就使得Linux开源社区不得不开发了本身的版本控制软件Git。linux

其余系统在每一个版本中记录着各个文件的具体差别git

Git保存每次更新的文件快照github

这是Git与其余版本控制系统的主要差异,其余版本控制系统节省了磁盘空间,但增长了计算量;Git是都保存了,由于磁盘原来越便宜。算法

在保存到Git以前,全部数据都要进行内容的校验和(checksum)计算,并将此结果做为数据的惟一标识和索引。Git使用SHA-1算法计算数据的校验和,经过对文件的内容或目录的结构计算出一个SHA-1哈希值,做为指纹字符串。该字符由40个十六个进制字符(0-9及a-f)组成,看起来就像是:数据库

首先安装git,我是在ubuntu下,因此输入命令:ubuntu

$sudo apt-get install git-corevim

OK!此时应该git成功安装,查看git版本:安全

$git --version分布式



一:获取项目的git仓库:this


1)从当前目录初始化:

$git init

建立了一个空的git仓库:


若是这个git仓库已经初始化过了,则提示exist:


若是成功建立一个空的git仓库能够看到在当前目录下出现一个.git目录,这个就是仓库了!


如今偷窥一下.git目录下都有什么:


2)从现有仓库克隆:

克隆仓库的命令为git clone [url]。好比,要克隆Ruby语言的Git代码仓库Grit,能够用下面的命令:

$git clone git://github.com/schacon/grit.git

这时在当前目录下建立一个名为“grit”的目录,其中内含一个.git目录,并从同步后的仓库中拉出全部的数据,取出最新版本的文件拷贝。若是想本身指定目录的名字:

$git clone git://github.com/schacon/grit.git mygrit

得到Linux2.6内核源码:


若是使用git clone --bared则会只clone .git仓库,而不会clone working directory和staging area。下面是对比,linux-kernel是使用git clone获得的,my-linux是使用git clone --bared获得的



二:新加文件到index中,使得git能够跟踪它:


git有3个区域,分别是:

  • working directory
  • staging area
  • repository

任何一个git里的文件都有三种状态:

  • 已修改(修改了某个文件,可是没有提交)
  • 已暂存(把修改的文件放在下次提交时要保存的清单中)
  • 已提交(该文件已经安全地保存在本地数据库中了)

基本的Git工做流以下:
  1. 在工做目录中修改某些文件
  2. 对这些修改了的文件做快照,并保存到暂存区
  3. 提交更新,将保存在暂存区域的文件快照转储到git目录中
工做目录下面的全部文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指原本就被归入版本控制管理的文件,在上次快照中有它们的记录,工做一段时间后,它们的状态多是未更新的,已修改或者已放入暂存区。而全部其余文件都属于未跟踪文件。它们既没有上次更新时的快照,也不在当前的暂存区里。初次克隆某个仓库时,工做目录中的全部文件都属于已跟踪文件,且状态为未修改。

使用git status检查当前文件状态:
$git status


说明没有跟踪任何文件

用vim修改一下工做目录下的main.c文件,再将文件git add到staging area,而后:

$git add .


git add+要跟踪文件名,能够看到这里多了一个index文件,这就是那个staging area。再次运行git status


能够看到main.c文件已经被跟踪,并处于暂存状态。


三:提交


而后再git commit进行提交,把数据提交到git仓库中:

$git commit -m "this is first commit"

注意这里经过-m 选项加一个注释,这样你就能够提交你的数据到git仓库了,也能够把两个步骤合并文一个步骤:

$git commit -a -m "this is first commit"

git有两个配置文件,一个在$HOME下,是全局的,设置时加--global,另外一个在仓库配置文件里。

$git config 

设置全局的:


本地的:

相关文章
相关标签/搜索