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的一个代码托管平台。

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 #再合并

 

 
posted @ 2022-09-01 15:08  奇思妙想流川枫  阅读(57)  评论(0)    收藏  举报