Git使用方法(一) 作者 李万鹏
kernel hacker修炼之道之Git使用方法(一)
kernel hacker修炼之道之Git使用方法(二)
kernel hacker修炼之道之Git使用方法(三)
kernel hacker修炼之道之Git使用方法(四)
Linux项目开始后,绝大多数的Linux内核维护工作都花在了提交补丁和保存归档的繁琐事物上(1991——2002年间)。到2002年,整个项目组开始启用分布式版本控制系统BitKeeper来管理和维护代码。到2005年的时候,开发BitKeeper的商业公司同Linux内核开发社区的合作关系结束,他们收回了免费使用BitKeeper的权力。这就使得Linux开源社区不得不开发了自己的版本控制软件Git。
其他系统在每个版本中记录着各个文件的具体差异
Git保存每次更新的文件快照
这是Git与其他版本控制系统的主要差别,其他版本控制系统节省了磁盘空间,但增加了计算量;Git是都保存了,因为磁盘原来越便宜。
在保存到Git之前,所有数据都要进行内容的校验和(checksum)计算,并将此结果作为数据的唯一标识和索引。Git使用SHA-1算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个SHA-1哈希值,作为指纹字符串。该字符由40个十六个进制字符(0-9及a-f)组成,看起来就像是:
首先安装git,我是在ubuntu下,所以输入命令:
$sudo apt-get install git-core
OK!此时应该git成功安装,查看git版本:
$git --version
一:获取项目的git仓库:
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目录中


说明没有跟踪任何文件
用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
设置全局的:
本地的: