git与svn
svn属于集中化版本控制系统,c/s架构
- 优点
适用简单,符合常规思维
同步代码简单,只需一步操作 - 缺点
数据丢失风险大
git属于分布式版本控制系统
- 优点
在网络断开的时候操作不受影响,可以频繁的进行提交更新,等到有网络的时候再上传到远程的镜像仓库就可以了
文档详细,使用提示到位,使用方便 - 缺点
每个人都拥有所有代码,不利于核心代码保密
git相关概念
- 工作区
存放git版本仓库的目录就是工作区,随意创建。 - 版本库
工作区有一个隐藏目录.git,是Git的版本库。 - 暂存区
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针HEAD。
你的本地仓库主要由三部分组成。
第一个是你的 工作目录,它持有实际文件;
第二个是 缓存区(Index),它像个缓存区域,临时保存你的改动;
第三个HEAD,指向你最近一次提交后的结果。
当使用add命令提交时,先提交到缓存区,然后再使用commit命令提交到本地库。HEAD指向最近一次提交结果,可改变HEAD指向实现版本控制。
git部署
yum install git -y
git config –global user.email “邮箱”
git config –global user.name “用户名” 配置你的名字和Email地址
git版本库
创建空目录,当工作区
mkdir gittest 名字随便
通过git init命令把这个目录变成Git可以管理的仓库
cd gittest/ git init 创建本地库,本地可以push,不可以远程push,可以远程clone git init --bare 创建裸库,适合做远程中心仓库,本地不可以push,可以远程push
- 在gittest目录下创建一个测试文件readme.txt
[root@vm20 gittest]# cat readme.txt
Git is a version control system.
Git is free software.
把文件添加到暂存区
git add readme.txt
提交文件到仓库分支
git commit -m “test” -m 本次提交的说明 必须要写,方便以后回退
查看git状态
git status
查看日志
git log
[root@git gittest]# git log
commit 7416b2dc7ae9e266846c8fe00819531d1ee448e0 id号
Author: cheng [email protected] 作者
Date: Thu Sep 13 13:17:07 2018 +0600 时间
这是我的第一个版本 描述内容
撤销修改和回退
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改
用命令git checkout – file。
场景2:当你改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改
分两步,第一步用命令git reset HEAD file,
就回到了场景1,第二步按场景1操作。
场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,使用版本回退,不过前提是没有推送到远程库。
- 查看现在的版本
git log - 回到想要的版本
回到上一个版本 git reset - -hard HEAD^
回到指定的版本 git reset - -hard 6fe5b9a2 (版本id号)
如果回到此次之后的版本,git log查不到id号,使用git relog
删除文件
从工作区删除test.txt,并且从版本库一起删除
rm -rf test.txt
git rm test.txt
git commit -m “删除文件test.txt”
如果工作去删除test.txt后想找回
git checkout - - test.txt