git的概述
git是一个版本管理工具,用来管理对应的版本的。开发流模式 敏捷开发(中小型公司做外包的时候采用的),迭代式开发(公司的主项目 大型的外包项目),迭代式开发(版本的迭代 涉及到多版本)就需要git进行管理了。git不但是一个版本管理工具,而且它还可以进行分布式管理。(分布式的版本管理工具(分支的思想)),svn版本管理工具(不是分布式(只有一条主干 (只有一个)))
git的安装
安装教程
无限下一步(最好不要改默认路径)
测试安装完成
随便在任意文件下 点击右键(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 版本号
参数 | 功能 | 场景 |
---|---|---|
–hard | 清空工作区与暂存区 | 放弃目标版本后所有的修改(将所有的修改全部删除) |
–soft | 保留工作区与暂存区,但是把版本之间的差异存放在暂存区 | 合并多个commit |
–mixed(或缺省) | 保留工作区清空暂存区,把版本之间的差异存放在工作区 | 1、有错误的commit需要修改;2、git reset HEAD清空缓存区 |
分支
有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的一个代码托管平台。
使用流程
先注册
新建仓库
克隆对应的项目
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 #再合并
标签:GIT,git,仓库,暂存区,文件夹,对应,分支 From: https://www.cnblogs.com/bigBossKiss/p/16647608.html