一、分布式版本控制系统Git简介
Git是一个开源的分布式版本控制系统,可以有效、高速的处理从很小到非常大的项目版本管理。Git是 Linus Torvalds为了帮助管理 Linux内核开发而开发的一个开放源码的版本控制软件。
二、Git的使用
2.1、Git的安装
在Linux 系统下可以输入Git命令来查看当前系统有没有安装Git如果没有的话可以通过sudo apt-get install git 安装git。当Git安装完成以后进入最后一步设置。因为Git是分布式版本控制系统,所以,每个机器都必须自报家门:你的名字和Email地址。配置命令为:
$git config --global user.name"Your Name"
$git config --global user. email"email@example.com"
注意git config命令的--global参数,用了这个参数,表示你这台机器上所有的Git仓库都会使用这个配置,当然也可以对某个仓库指定不同的用户名和Email地址。
2.2、创建Git管理的版本库
版本库又名仓库,英文名repository,你可以简单理解成一个目录,这个目录里面的所有文件都可以被Git管理起来,每个文件的修改、删除,Git都能跟踪,以便任何时刻都可以追踪历史,或者在将来某个时刻可以“还原”。首先进入一个要创建版本库的目录,在使用git init。
$ git init
Initialized empty
Git repository
in /
Users/michael/learngit/.git/
2.3、查看版本库的状态
命令可以让我们时刻掌握仓库当前的状态,我们可以通过这个命令知道当前哪些文件被修改,哪些文件加入到暂存区、哪些文件被提交到工作区。
$ git status
2.4、Git的add和commit
$ git add readme.txt
git add 命令是为了把修改文件加入到暂存区。
$ git commit -m
"append GPL"
git commit 命令是把暂存区的文件加入到工作区。
2.5、查看提交日志
在实际工作中,我们脑子里怎么可能记得一个几千行的文件每次都改了什么内容,不然要版本控制系统干什么。版本控制系统肯定有某个命令可以告诉我们历史记录,在Git中,我们用git log命令查看:
$ git log
commit 3628164fb26d48395383f8f31179f24e0882e1e0
Author: Michael Liao
<askxuefeng@gmail.com>
Date: Tue Aug 20 15:11:49 2013 +0800
append GPL
commit ea34578d5496d7dd233c827ed32a8cd576c5ee85
Author: Michael Liao
<askxuefeng@gmail.com>
Date: Tue Aug 20 14:53:12 2013 +0800
add distributed
commit cb926e7ea50ad11b8f9e909c05226233bf755030
Author: Michael Liao
<askxuefeng@gmail.com>
Date: Mon Aug 19 17:51:55 2013 +0800
wrote a readme file
2.6、版本回退
git checkout -- file;撤销对工作区修改;这个命令是以最新的存储时间节点(add和commit)为参照,覆盖工作区对应文件file;这个命令改变的是工作区
git reset HEAD -- file;清空add命令向暂存区提交的关于file文件的修改(Ustage);这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
2.7、添加远程仓库Github
1、在远程仓库加入本地的ssh的公钥
因为本地区和远程去使用的是ssh安全协议通信。
$ ssh-keygen -t rsa -C email@example.com(任意邮箱即可)
2、把本地仓库与远程仓库关联
$ git remote add origin git@github.com:michaelliao/learngit.git(远程代码仓库的地址)
其中上述命令的地址为Github远程库的地址。
3、 把本地库内容推送到远程库
Git push –u origin master
把本地库内容推送到origin所指向库的master分支。由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。以后再要推送直接使用
Git push origin master
4、 从远程库拉取内容
分别有命令git clone 和git pull
clone是本地没有repository时,将远程repository整个下载过来,此时不但下载下来内容,而且在本地创建了一个版本控制的仓库,并且自动绑定了master分支。
pull是本地有repository时,将远程repository里新的commit数据(如有的话)下载过来,并且与本地代码merge。