Git是分布式版本管理系统
Svn是集中式版本管理系统
git速度快,适合大规模协同开发
什么是分布式版本管理系统
假如有10个人,每个人的代码库都是独立的,自己想进行代码提交回滚都可以,无需链接中央服务器,无需联网,所以git是本地开发还可以链接中央服务器与别人交换信息
Git生态
Git是分布式版本管理系统
Gitlab 是一个git的私有库的解决方案
Github 是git公有库的解决方案
Git的原理
Git有四个区域
本地仓库,暂存区域,工作目录是一个区域,(就是上一部我们创建的目录test)
使用git init以后这个目录就包含了这三个区域
远程仓库就相当于svn的中央仓库
GIT的四种状态
Git如何对版本进行管理?
Git会对它管理的文件打一个标识这个标识就是四种状态(每个标识处于哪种状态)
- Untarcked状态(未被追踪)如果一个文件第一次放到git库的工作目录里那么它叫做未被追踪的文件处于未被追踪的状态(这个文件还没有纳入版本管理)
- staged状态 (以暂存)使用git add 把这个文件推到暂存区域,这个文件也进入了staged状态
- Unmodifile状态 (未被修改)使用 git commit把文件提交到本地仓库,文件也就进入了未被修改的状态(所有文件推送到本地仓库都会变为未被修改的状态)
- Modifile状态(已修改)如果对文件进行了编辑,文件会从为被修改的状态变为已修改的状态已修改的文件会从本地仓库重新拉回到工作目录里文件修改完成在进行提交,形成循环
GIT安装
注意不要使用git1.8以下版本,推荐使用2.7版本
安装依赖 yum -y install curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker 公网下载git wget https://github.com/git/git/archive/v2.7.4.zip 解压文件 unzip v2.7.4.zip (如果没有unzip需用yum下载) 进入目录 cd git-2.7.4 编译安装 make prefix=/usr/local/git all make prefix=/usr/local/git install rm -rf /usr/bin/git ln -s /usr/local/git/bin/git /usr/bin/git 查看版本 git --version
GIT初始化
新建目录 mkdir /root/test 初始化 cd /root/test git init (初始化之后这个目录就被git的版本控制) 添加版本库的用户信息(就是在提交的时候记录了是谁提交的和他的邮箱) git config --global user.name "wk" (提交名字) git config --global user.email xxxxxxxx@163.com (提交邮箱) git config --list (查看提交的信息)
GIT常用命令
git add 加入暂存(索引区) git status 查看状态 git status-s 状态概览 git diff 尚未暂存的文件 git diff --staged 暂存区文件 git commit 提交更新
git commit -m "first commit" 第一次提交
git reset 回滚 #--soft 缓存区和工作目录都不会被改变 --mixed 默认选项。缓存区和你指定的提交同步,但工作目录不受影响 --hard 缓存区和工作目录都同步到你指定的提交 git rm 从版本库中移除 git rm --cached README 从暂存区中移除 git mv 相当于执行 mv ,git rm ,git add 三个命令
分支管理
正常开发时不能使用master分支,会造成代码提交混乱
创建分支git branch
git branch 分之一
切换分支git checkout
git checkout 分之一
git branch -v (查看信息) git branch -d (删除分支) git checkout (切换分支) git checkout --文件名 撤销 git merge (代码合并) git merge lianxi (在master上操作合并的是联系的分支) git branch --merge(查看哪些分支已经被合并过来了) git branch --no-merge (查看没有被合并过来了分支)
Git远程管理
git clone 把远程的代码库拉到本地
git remote -v (查看远程库的地址和库的名字)
git push origin 分之一 (把本地的库推到远程仓库origin是库名分之一是分支名)
git fetch origin 分之一 (把远程的库的下载本地)
git tag (添加标签)
git tag -a v1.0 -m "描述"