GIT是一款开源的分布式版本管理工具,由Linux之父-Linus Benedict Torvalds开发而来的版本管理工具。 其主要包括的特性:
1、版本库本地化,支持离线提交,相对独立,且不影响协同工作;
2、更少的“仓库污染”,只是在主目录下面存在一个.git 目录;
3、支持快速创建分支和分支之间切换,多版本开发,版本之间的合并;
4、分布式版本管理,内容完整性好。
Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目录内。
1) 工作目录:用户本地的目录;
2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域,Git 称该区域为索引。
3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次更新
常用命令
git config - 获取和设置git选项
$git config --global user.name “yourname” #设置用户名称
$git config --global user.email your@email.cn #设置邮箱
$git config --list #列出所有的配置信息
$git help config #浏览器中打开config的帮助文档页面
git init -创建git仓库
$git init #在当前下创建一个.git目录
$git add . #把所有文件加入index表中
git add - 添加文件到index 表中
$git add . #把所有文件加入index 表中
$git add file1 file2 # 把file1和file2 添加到index表中
git status - 查看当前工作目录的状态
git commit – 修改提交到本地仓库
$git commit -m “msg” hello.java app.java #文件提交本地仓库
$git commit -a
git log - 产看文件提交日志
$git log master --查看当前master分支的log
$git log remote/korg/master --查看远程分支的log
$ git log --since="2 weeks ago“
$git log --name-status a.txt
Git show - 显示各种对象的信息(可以是branch, commit id, tag等)
$git show v1.0.0
$git show v1.0.0^{tree}
$git show -s --format=%s v1.0.0^{commit}
$git show master:a.txt
Git tag - 创建、删除和枚举标签
$git tag
$git tag -a -m “msg” v1.0 d8e2e0e
$git tag v1.0
$git tag -d v1.0
git clone 克隆远程库代码到本地
$git clone git@192.168.150.128:/gitrepo/testProject.git
git remote - 用于管理远程仓库
$git remote -v
$git remote add center ssh://benn@192.168.1.11/git_repo/linux-2.6.36.git
$git remote rm center
$git remote show center
git pull - 等价于fetch + merge
格式:
git pull [options] [<repository> [<refspec>…]]
refspec格式:
+src:dst
举例:把远程仓库center中的master分支和本地work分支合并
$git pull center +master:work
git fetch
常用格式:
git fetch [<options>] [<repository> [<refspec>…]]
举例:
$git fetch center #取所有分支和tag到本地
$git fetch center +master:tmp #把center的master分支取到tmp分支中
git push - 把本地提交推送到远程repo中
$git push origin master
$git push origin master:refs/heads/experimental
$git push origin +dev:master
Git checkout - 取出分支或者路径到working tree
举例:
$git checkout master #切换到master分支
$git checkout -b <new_branch> [<start point>]
#创建本地tmp分支,追踪korg/master分支
$git checkout -b tmp remotes/korg/master
$git checkout [<tree-ish>] [--] <paths>…
#取前2个版本的README文件
$git checkout HEAD~2 README
git branch - 创建、删除和枚举branch
$git branch -d tmp #删除
$git branch tmp master #创建
$git branch tmp #创建
$git branch -v #枚举
Git merge - 合并多个开发分支
在master分支
$git merge topic