GIT版本控制系统
版本控制系统:
- 记录历史版本信息(记录每一次修改的记录)
- 方便团队相互之间协作开发
.......
常用的版本控制系统
- cvs / svn:集中式版本控制系统
- git :分布式版本控制系统
GIT工作原理
- 工作区:我们能看到的,并且用来写代码的区域
- 暂存区:临时存储用的
- 历史区:生成历史版本
工作区 -> 暂存区 -> 历史区
1.GIT的全局配置
第一次安装完成git后,我们在全局环境下配置基本信息:我是谁?
$ git config -l 查看配置信息
$ git config --global -l 查看全局配置信息
配置全局信息:用户名和邮箱
$ git config --global user.name 'xxx'
$ git config --global user.email 'xxx@xx.xx'
2.创建仓库完成版本控制
创建本地git仓库
$ git init
//=>会生成一个隐藏文件夹 “.git”(这个文件夹千万不要删,因为暂存区和历史区还有一些其它的信息都在这里,删了就不是一个完整的git仓库)
在本地编写完成代码后(在工作区),把一些文件提交到暂存区
$ git add xxx 把某一个文件或者文件夹提交到暂存区
$ git add . 把当前仓库中所有最新修改的文件都提交到暂存区
$ git add -A
$ git status 查看当前文件的状态(红色代表在工作区,绿色代表在暂存区,看不见东西证明所有修改的信息都已经提交到历史区)
把暂存区内容提交到历史区
$ git commit -m'描述信息:本次提交内容的一个描述'
查看历史版本信息(历史记录)
$ git log
$ git reflog 包含回滚的信息
关于 git 的操作命令
GIT
提交代码需要经历三个区
- 工作区 本地文件夹
- 暂存区 缓存区域
- 历史区 针对本次提交,生成一个版本记录
提交一个版本的具体步骤
- 查看当前仓库状态:git status
-
- 红色 说明当前文件在工作区
-
- 绿色 说明当前文件在暂存区
- 将工作区指定文件添加到暂存区:git add 文件名
- 将工作区所有文件添加到暂存区 git add .
- 将暂存区文件全部添加到历史区:git commit -m '描述'
- 将历史区文件上传到远程仓库 (master 是主干的意思) origin 对应的远程仓库的名称:git push origin master
- 输入 github 用户名 密码
将本地修改上传到远程仓库
- 修改文件
- git add .
- git commit -m'备注信息'
- git push origin master
- push 后有的需要你输入 username 和 password
- 把暂存区的修改添加到历史区;添加到历史区就会生成一个版本,这个版本有一个版本号;注释一定要写,描述本次你改了什么,方便有一天你要回退到这个时间点
基本的 git 操作
- 克隆远程仓库地址:git clone
- 查看当前的配置信息:git config --list
- 查看本地仓库和哪个远程仓库有关联:git remote -v
- 工作区和暂存区比较:git diff
- 暂存区和历史区比较:git diff -cached
- 工作区和历史区比较:git diff master
- 删除暂存区中的文件:git rm --cached + 文件名
- 拉取暂存区中的文件覆盖当前工作区中的内容(通常用来做放弃修改当前工作区中的修改,但是至于暂存区中有这个文件才能生效):git checkout + 文件名
常用 Linux 命令
- 清屏:clear
- 查找:find -name 文件名 根据文件名查找文件
- 创建文件夹:mkdir 文件名
- 创建文: touch 文件名.扩展名
- 查看文件内容: cat 文件名
- 编辑文件:vim 文件名
-
- i 修改
-
- esc 退出修改状态
-
- :w 保存
-
- :q 退出
-
- :wq 保存并退出
- 当前目录:cd ./
- 上级目录:cd ./
- 根目录: cd /
- 切换目录:cd 目录名
- 查看当前所在路径:pwd
- 查看当期目录下所有的文件:ls
- 查看所有文件包含隐藏文件:ls -al
版本回退(回滚)
- 查看版本库中的历史记录,会有提交注释和版本号,通过版本号可以回退到任意版本;git log
- 回退到某一个版本:git reset --hard 版本号
git 分支
- git 的远程仓库在创立之初存在一个默认分支 master,这个分支称为主干;这个分支上保存着线上运行的代码,是经过测试的没有问题的代码;
- 真实项目开发中我们一般不在 master 上做开发,都是基于 master 新开一个分支作为开发分支;每个分支都有自己的版本库,记录在不同的分支上的变更;
- 分支是在开分支一刻 master 的一个快照,master 里面的代码当时长什么样子,分支里面的代码就会长什么样子;接下来所有的开发都是在分支上完成的;
- 当开发完成后再把分支合并到 master 上;在合并之前要同步 master 上的代码到分支上,然后再把分支合并到 master,此时 master 就有了本次分支开发的内容,
- 最后再把本地 master 的版本库同步到远程的 master,可以 push,一般使用 merge request;
创建分支
- 新建并且切换到新分支:git checkout -b 分支名
- 这种方式建立的分支并不会自动切换到分支:git branch 分支名
- 切换分支:git checkout 目标分支名
- 删除分支:git branch -D 分支名
- 合并分支(把分支1上的修改合并到当前分支):git merge 分支1
- 注意每个分支有自己的独立的版本库,在分支 a 上的修改,如果不做合并,b 分支上是不会有的;