Git是分布式版本管理系统
Svn是集中式版本管理系统git
git速度快,适合大规模协同开发github
什么是分布式版本管理系统缓存
假若有10我的,每一个人的代码库都是独立的,本身想进行代码提交回滚均可以,无需连接中央服务器,无需联网,因此git是本地开发还能够连接中央服务器与别人交换信息服务器
Git生态curl
Git是分布式版本管理系统
Gitlab 是一个git的私有库的解决方案
Github 是git公有库的解决方案分布式
Git的原理
Git有四个区域svn
本地仓库,暂存区域,工做目录是一个区域,(就是上一部咱们建立的目录test)fetch
使用git init之后这个目录就包含了这三个区域url
远程仓库就至关于svn的中央仓库spa
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 "描述"