GIT
git的概述
git是一个版本管理工具,用来管理对应的版本的。开发流模式 敏捷开发(中小型公司做外包的时候采
用的),迭代式开发(公司的主项目 大型的外包项目),迭代式开发(版本的迭代 涉及到多版本)就
需要git进行管理了。git不但是一个版本管理工具,而且它还可以进行分布式管理。(分布式的版本管理
工具(分支的思想)),svn版本管理工具(不是分布式(只有一条主干 (只有一个)))
git的安装
下载地址:https://git-scm.com/
安装教程
无限下一步(最好不要改默认路径)
测试安装完成
随便在任意文件下 点击右键(git gui here===git bush here)
打开dos命令窗口 window+r
git --version
dos命令窗口和git命令窗口
dos命令窗口是windows系统下的,git命令窗口是点击git bash进入的窗口。
dos命令窗口只支持windows指令,git命令窗口只支持linux指令
git入门
git的工作流程通过对应的仓库来进行管理的,每个人都拥有对应的本地仓库,由远程仓库提供统一管
理。首先需要在本地仓库进行commit,然后再将对应的内容从本地仓库push到对应的远程仓库。远程
仓库才能提供对应的所有代码的管理,而本地仓库只能管理对应的本地的代码。所以首先先要建立对应的本地仓库。
构建本地仓库 git init (就是一个文件夹)
git init
会产生对应的一个文件夹 这个文件夹就是我们的本地仓库(这个文件夹删除那么对应的本地仓库就没有
了 它为了防止我们去删除这个文件夹 它将这个文件夹设置为隐藏的)
git仓库的分区
git仓库为了更好的管理 它进行了分区操作,将对应的仓库分为了三个区,工作区,暂存区,历史区(版本库)。
- 工作区 就是我们的工作文件存放的区(也就是这个git文件夹的父文件夹下的所有的文件都属于工作区)
- 暂存区 就是我们暂时存储文件的区 暂时存储的文件也就是需要commit到历史区的文件
- 历史区 它就是保存我们所有的版本的一个区(版本管理 回退)
一个文件如果需要到历史区必须经过暂存区
暂存区操作
从工作区到暂存区
git add 文件路径
查看对应的文件状态(查看对应的暂存区内容)
git status
从暂存区撤回
git reset HEAD -- 文件名
添加文件夹到暂存区(它会将里面所有的内容添加进去 如果是空文件夹 将添加不成功)
git add 文件夹路径
从暂存区撤回文件夹(将文件夹下所有的内容撤回)不会影响工作区
git reset HEAD -- 文件夹名
添加所有内容到暂存区
git add --all
git add .
git add *
从暂存区撤回所有
git reset HEAD -- .
git reset HEAD -- *
将暂存区的文件提交到历史区
暂存区的数据到历史区必须提交对应的信息(用户名及邮箱)
git config user.name 名 --global git config user.email 邮箱号 --global
提交对应的暂存区文件到历史区 (暂存区就没有了)
git commit 文件名
vi编辑器 三种模式
阅读模式(不能编辑的 插入模式返回阅读模式 按esc)
插入模式 按i 都能进行对应的插入模式(就可以进行编辑)
命令行模式 (按对应的: 进入命令行 后面接的是对应的指令 wq 保存并退出)
查看版本库的信息
git log
简化写法 不需要进vi
git commit 文件名 -m 相关信息
提交所有的内容
git commit .
最新提交的它有个别名叫HEAD
历史区数据是不能撤回的 但是它可以回滚数据来影响对应的暂存区和工作区
git reset --hard 版本号
分支
有a去完成登录功能,b去完成对应的用户列表渲染功能,a做的事情和b做的事情没有关系,但是这个
俩个功能都属于对应的一个系统的模块,那么我们如何去区分呢。这个时候为了更加方便的开发以及管
理,就产生了分支。a在对应的登录的分支上做事情。b在对应的用户渲染的分支上做事,这个时候管理
和对应的提交就更加简单了。(分支是多人开发的核心)
主分支 master
分支命名规范
git 分支分为集成分支、功能分支和修复分支,分别命名为 master、feature 和 fix,均为单数。不可使
用 features、future、hotfixes、hotfixs 等错误名称。
- master(主分支,永远是可用的稳定版本,不能直接在该分支上开发)
- develop(开发主分支,所有新功能以这个分支来创建自己的开发分支,该分支只做合并操作,不
能直接在该分支上进行开发)
- master_check(未上线前的开发分支,该分支只做只合并操作,不能直接在该分支上开发,前期
开发完成后将feature分支合并到此分支)
- online(线上分支,由发版人员确认测试没问题后,将online_check分支合并到此分支)
- online_check(开发主分支,所有新功能以这个分支来创建自己的开发分支,该分支只做只合并操
作,不能直接在该分支上开发)
- feature-xxx(功能开发分支,在develop上创建分支,以自己开发功能模块命名,功能测试正常后
合并到develop分支,开发完成后合并到online_check分支上)
- fix-xxx(修改bug分支,在master分支上创建,修复完成后合并到 online_check)
注意事项:
- 一个分支尽量开发一个功能模块,不要多个功能模块在一个分支上开发。
- feature 分支在申请合并之前,最好是先 pull 一下master_check分支下来,看一下有没有冲突,
如果有就先解决冲突后再申请合并。
分支查看 git branch
git branch
开辟分支(同级创建)
git branch 分支名
切换分支
git checkout 分支名
分支删除(不能处在本身的分支里面删除自己)
git branch -d 分支名
git branch -D 分支名 #强制删除
分支的合并(会产生新分支)和衍和 (将有差别的内容放入对应的分支中)
将对应的分支合并给当前分支 进入当前分支合并到对应指定的分支
git merge 分支名
git rebase 分支名
远程仓库
远程仓库相当于一个代码托管平台,常见的远程仓库 github(全球的开源项目 私服(收费的)),
gitee(国内码云),基于github的一个平台gitlab(公司用 私服)
gitee 国内代码托管平台(大型开源几乎没有)
gitee
gitee是代码托管平台,国内的基于git的一个代码托管平台。
下载地址: https://gitee.com/
使用流程
先注册
新建仓库
克隆对应的项目
git clone 地址
添加对应的地址(基于git 文件夹不是你clone下来的)
git init git remote add https://gitee.com/mr_wang_oo/react-project-library.git
拉最新的代码
git pull origin master
进行对应的提交
git add . git commit . -m 第一次提交 git push -u origin master
查看版本信息
git remote -V
请求对应内容
git fetch //不会合并 git pull //直接合并
git冲突
a提交了一次 index.html (版本号为1.0) b提交了一次(小于当前版本 不能进行提交的) index.html
b如果要提交将当前版本升级 获取最新版本
git pull
pull会进行合并 a对应index.html的操作和b是不一样的,不知道采用谁的 所以就会产生冲突,进行合
并的话它会直接将对应的b写的内容全部干掉,只会留下a的。这个是不合适,所以你应该按照情况而定
看需要留什么就留什么。
所以就需要人工来进行干预(还是需要获取最新版本)
需要出来一个副本 这个temp相当于一个副本 这个副本上有master的所有的内容
git fetch origin master:temp
git diff #比对
git merge temp #再合并