GIT
git的概述
git是一个版本管理工具,用来管理对应的版本的。
开发流模式:敏捷开发(中小型公司做外包时用)、迭代式开发(公司的主项目,大型的外包项目)。迭代式开发需要git进行管理。
svn版本管理工具(只有一个主干,没有第二个分支的小型管理工具)
git不但是一个版本管理工具,还是一个还可以进行分布式管理的版本分布式管理工具(有很多分支的大型项目管理)
git入门
git的工作流程:通过对应的仓库来进行管理,每个人都拥有对应的本地仓库,由远程仓库统一管理。
首先需要在本地仓库进行commit,然后再将对应的内容从本地仓库push到对应的远程仓库。远程仓库才能提供对应的全部代码,本地代码只能提供本地的代码。
构建本地仓库 git init(一个文件夹,是隐藏的)
git仓库的分区
git仓库为了更好的管理,进行了分区操作,将对应的仓库分为三个区:工作区、暂存区、历史区(版本库)
1.工作区 就是我们工作文件存放的区(就是git这个文件夹的父文件夹下的所有文件)
2.暂存区 就是我们暂时存储文件的区,是把工作区转为历史区的必经之路
3.历史区 保存我们所有版本的一个区(可以进行回退)
git add ./文件夹(把指定的文件夹(不能为空)添加到暂存区)
(git add --.或者all或者*)把全部文件夹都加入暂存区
(git reset HEAD --.或者*)把全部文件撤回
git status (查看状态)
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 #再合并

浙公网安备 33010602011771号