文章目录

  • 一、分支思路
    • 1. Git命令常用理解记忆
    • 2. 分支换分规则
    • 3. 线上发布准备
  • 二、 实战前期准备
    • 2.1. 在远程仓库创建kernel_system项目
    • 2.2. 将远程仓库克隆到本地
    • 2.3. 本地准备操作
  • 三、场景实战
    • 模拟提交
    • 3.1. Git合并某个分支的某/多次提交到指定分支
    • 3.2. Git合并分支
    • 3.3. 回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)
    • 3.4. Git合并冲突
    • 3.5. Git删除中间某一/多次提交记录和提交的文件
    • 3.6. 撤销回滚未未添加至暂存区文件
    • 3.7. 回退到以前的指定版本,之后提交的记录和提交的文件全部删除

一、分支思路

1. Git命令常用理解记忆

1.初始化仓库用 git init
2.提交用git commit -m"提交说明"
3.推送远程用git push origin 本地分支名
4.拉取项目用 git clone 项目地址
5.回退文件人2种:未提交用git checkout提交后的用git revert
6.删除姿势有2步:删除指定提交和提交文件用git rebase 回退到之前的指定提交历史节点,删除之后的提交记录和提交文件用:git reset --hard
7.更新项目用git pull
8.和远程仓库建立连接:git remote add origin 远程项目地址

2. 分支换分规则

企业git仓库搭建思路:
一般企业根据不同的环境划分为不同的分支,常见的分支划分策略如下:

分支名 说明 备注
local 本地开发环境 本地开发+单元测试
dev 技术开发环境 技术测试,有专门的测试人员
test 回归测试环境 模拟生产线上环境预测试
uat 压测环境 测试服务器瓶颈
prod(master) 生产环境 线上已发布,正在正式运行的项目

3. 线上发布准备

一般正式环境发布之前会做这几件事:

分支名 说明 备注
拆板 把与自己无关的版本拆除调
合版 核对自己发布文件版本
发布 将核对无误的版本发布到测试环境
技术测试 测试发布后的程序,有问题让开发协助修改,没问题发布回归测试环境
回归测试 测试技术环境没问题的功能点,模拟生产测试(此环境和生产环境一样的)
上线 发布回归测试环境,测试成功的功能点

二、 实战前期准备

1.在远程仓库创建kernel_system项目
2.将远程仓库克隆到本地
3.初始化项目,添加一个README.txt文件项目说明
4.分别基于master分支,创建local、dev、test分支,分别代表不同的开发或者测试环境,开发/测试/发布只需要切换分支即可。
分支对照表:
master-生产
local-本地开发
dev-技术测试
test-回归测试分支
5.将本地创建的local、dev、test分支推送至远程的版本库

2.1. 在远程仓库创建kernel_system项目


2.2. 将远程仓库克隆到本地

git clone git@gitee.com:gb_90/kernel_system.git

2.3. 本地准备操作

实现流程:
3.初始化项目,添加一个README.txt文件项目说明
4.分别基于master分支,创建local、dev、test分支,分别代表不同的开发或者测试环境,开发/测试/发布只需要切换分支即可。
分支对照表:
master-生产
local-本地开发
dev-技术测试
test-回归测试分支
5.将本地创建的local、dev、test分支推送至远程的版本库
#master分支操作
cd kernel_system
echo "project desc" >>README.TXT
vim README.TXT
添加内容:
master 分支线上发布分支
git push origin master#local分支操作
git checkout master
git checkout -b local
vim README.TXT
添加内容:
local 分支本地开发分支
git push origin local#dev分支操作
git checkout master
git checkout -b dev
vim README.TXT
添加内容:
dev 分支技术测试分支
git push origin dev#test分支操作
git checkout master
git checkout -b test
vim README.TXT
添加内容:
test 分支回归测试分支
git push origin test





三、场景实战

模拟提交

zhangsan提交3次,模拟做了3个功能点,lisi提交2次模拟做了2个功能点,wangwu提交2次模拟做了2个功能点

#lcoal 本地分支
#zhangsan 提交3次
git checkout local
echo "1" >> a.txt
git add a.txt
git commit -m"zhangsan 第1次提交"
echo "2" >> b.txt
git add b.txt
git commit -m"zhangsan 第2次提交"
echo "3" >> c.txt
git add c.txt
git commit -m"zhangsan 第3次提交"#lisi 提交2次
git checkout local
echo "1" >> 1.txt
git add 1.txt
git commit -m"lisi第1次提交"
echo "2" >> 2.txt
git add 2.txt
git commit -m"lisi第2次提交"#wangwu 提交2次
git checkout local
echo "1" >> h.txt
git add h.txt
git commit -m"wangwu 第1次提交"
echo "2" >> j.txt
git add j.txt
git commit -m"wangwu 第2次提交"查看所有的提交记录:
git log --pretty=oneline --abbrev-commit

3.1. Git合并某个分支的某/多次提交到指定分支

紧急发布变更:
zhangsan的3个功能点和lisi的2个功能点都要发布测试,
wangwu的2个功能点暂时不发布。明确要做的事情:
zhangsan和lisi的5个功能点从local分支要发布到dev分支去申请技术测试。应该如何操作呢?
方案1((建议使用,这样不会出错):
正常流程,在dev分支,将zhangsan的3次提交和lisi的2次提交,合并到dev分支即可。需要合并5次提交,因为每一次提交就是一个功能点,一条合并提交命令即可。

合并前截图:

方案1:
在lcoal分支上查看所有的提交记录,等会我们会用到提交<commitId>进行合并提交处理
git log --pretty=oneline --abbrev-commit
git checkout dev
ls
# Git合并某个分支的某/多次提交到指定分支
git cherry-pick 26844fb 9abaf33 3e46869 a03beb1 9240aef

3.2. Git合并分支

前提:基于dev技术测试环境已经把zhangsan、lisi、wangwu的功能测试没问题
大版本发布变更:
zhangsan的3个功能点、lisi的2个功能点以及wangwu的2个功能点都要发布回归测试。明确要做的事情:
zhangsan和lisi的5个功能点从local分支要发布到dev分支去申请技术测试。应该如何操作呢?
方案1((建议使用,这样不会出错):
正常流程,在dev分支,将zhangsan的3次提交和lisi的2次提交,合并到dev分支即可。需要合并5次提交,因为每一次提交就是一个功能点,一条合并提交命令即可。
案例演示:
这里刚才已经dev上有zhangsan、lisi的的5个功能点了,只要把wangwu的2个功能点,从local分支合并到dev即可
git cherry-pick a52cf77 de17f44
在dev分支上查看所有的提交记录,等会我们会用到提交<commitId>进行合并提交处理
git log --pretty=oneline --abbrev-commit
切换到test分支,把dev分支上zhangsan、lisi、wangwu的7次提交合并到test分支
git checkout test
git cherry-pick 6b0aa2f 8bbaf28 bf697f7 877d827 08d24a0 4297a8d efbaa86


方案2:
前提:以前dev分支和test代码都是一样的,只是在dev分支上新增的这7次提交,在test分支是没有的。
在这种场景下,直接合并分支即可,换言之,把dev分支合并到test'分支
git checkout test
git merge dev

3.3. 回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)

  • 回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)
  • 撤销回滚已经提交的文件
背景:在dev分支上,zhangsan、lisi、wangwu一共有7次提交。但是,在打包
编译的时候发现,zhangsan、lisi、wangwu将在本地测试好的代码从local分
支合并到dev分支后,编译出现错误,经过查看由于wangwu同事在我不知情的情
况下,由于wangwu的2次错误提交导致的。因此,和wangwu说明zhangsan、lisi
的功能属于紧急发布着急上线,于是,在和wangwu协商后,决定将wangwu的2次
错误提交记录进行回滚/撤销。待zhangsan、lisi他们功能上线后,wangwu再将
2次错误的提交在local修改后,重新合并到dev分支,重新编译打包,进行发布
技术测试环境。
#执行原则:只要撤销C提交修改即可
#1.找到要回滚/撤销的提交的<commitid>
git log --pretty=oneline --abbrev-commit
#2.撤销wangwu的4297a8d efbaa86 提交
git revert 4297a8d efbaa86
执行上面命令后,会进入2次命令窗口(提交记录/1次),让你添加回滚指定提交的简要说明,默认,按esc :wq保存即可
回滚之后,可以看到wangwu的2次提交(4297a8d efbaa86)记录还有,但是,2次提交文件都回滚了(从dev分支消失了)。
同步远程分支
git push origin dev

3.4. Git合并冲突

git默认自动帮我们合并的,但是也是有前提的。
假设:
在dev分支上有一个README.TXT文件,内容如下:
企业项目实战Git团队操作
dev    分支 技术测试环境在test分支上有一个README.TXT文件,内容如下:
企业项目实战Git团队操作
test   分支 回归测试分支如果这个文件的内容,都不在统一行,git会自动帮我们冲突合并。但是假设:
dev分支上的README.TXT文件的“dev    分支 技术测试环境” 这句话在第2行
test分支上的README.TXT文件的“test   分支 回归测试分支” 这句话README.TXT文件也在第2行
在test分支执行git merge dev,这样就会出现版本冲突,如果不显示,你在执行切换分支操作时就是提示你。如下:
Administrator@PC-201911062145 MINGW64 ~/Desktop/kernel_system (test|MERGING)
$ git checkout dev
error: you need to resolve your current index first
README.TXT: needs merge

解决方案:

解决冲突即可:vim README.TXT
编辑前内容如下:
企业项目实战Git团队操作
master 分支 线上发布分支
<<<<<<< HEAD
test   分支 回归测试分支
=======
dev    分支 技术测试环境
>>>>>>> dev有3种解决方案
方案1:
dev那句话和test那句话 都保存
方案2:
删除dev那句话保存test那句话
方案3:
删除test那句话保存dev那句话这个就要根据实际需求而言了,这里我选择方案1(都保存)进行演示:
解决冲突后文件的内容如下:
企业项目实战Git团队操作
master 分支 线上发布分支
test   分支 回归测试分支
dev    分支 技术测试环境git add README.TXT
git commit -m"merge dev"

3.5. Git删除中间某一/多次提交记录和提交的文件

  • Git删除中间某一/多次提交记录和提交的文件
    (明确风险后,执行操作,这次作用于特殊情况下)
代码更新发现编译出错,后来发现其他人的一次代码提交导致的,并且修改量很大,不好恢复成原来的,就想把这笔提交删除掉,不影响工作。
具体步骤:
#1.首先git log查看提交记录,找到出错的前一笔提交的commit_id
#2.用命令git rebase -i commit_id ,查找提交记录
#3.将出错那笔提交的pick改为drop
#4.Esc,:wq
#5.同步远程仓库(注释本地和远程文件及提交记录是不一样的,在明确风险的情况下,因此采用强退)
git push -u -f origin master
完成!
案例浮现:
背景:在test分支上,zhangsan、lisi、wangwu一共有7次提交。但是,在打包
编译的时候发现,zhangsan、lisi、wangwu将在本地测试好的代码从local分
支合并到dev分支后,编译出现错误,经过查看由于wangwu同事在我不知情的情
况下,由于wangwu的2次错误提交导致的。因此,和wangwu说明zhangsan、lisi
的功能属于紧急发布着急上线,于是,在和wangwu协商后,决定将wangwu的2次
错误提交记录和提交的文件进行删除。待zhangsan、lisi他们功能上线后,wangwu再将
2次错误的提交在local修改后,重新合并到dev分支,重新编译打包,进行发布
技术测试环境。
git checkout test
#找到删除的指定提交<commitid>
git log --pretty=oneline --abbrev-commit
git rebase -i 8743310


3.6. 撤销回滚未未添加至暂存区文件

撤销回滚未未添加至暂存区都使用 git checkout
撤销工作区已经修改但是尚未添加至暂存区的文件恢复
git checkout .
如果,只想恢复a.js
git checkout a.js
这样就可以恢复到修改前之前的a.js的状态

3.7. 回退到以前的指定版本,之后提交的记录和提交的文件全部删除

回退到以前的指定版本,之后提交的记录和提交的文件全部删除

git reset --hard 指定回退的提交的<commitid>

项目实战Git团队操作_图形化版本相关推荐

  1. idea将本地项目推送至远程仓库(图形化版本01)

    需求:演示把项目推送到github远程仓库: 需求思路分析:1.拉取或更新(Update Project)项目2.将本地项目添加至暂存区3.将暂存区的项目提交到本地仓库4.将本地仓库中的代码推送至(P ...

  2. 创新小组 实战Git团队企操作手册_精华版本

    文章目录 一.入门试炼 1. Git命令理解+准则 2. Git分支换分思路 3. 线上发布准备 二. 实战前期准备 二.场景实战 模拟提交准备 3.1. Git合并某个分支的某一/多次提交到指定分支 ...

  3. android在使用单位方面,《Android项目实战——手机安全卫士》_面试题答案.docx

    <Android项目实战--手机安全卫士>_面试题答案 <Android项目实战--手机安全卫士>面试题答案第1章项目简介请问Android程序的真正入口是什么.Android ...

  4. ASR项目实战-交付团队的分工

    ASR项目实战-交付团队的分工 对于通常的软件项目,参与角色,比如可以有用户,消费者,产品团队,研发团队(研发团队包括开发和测试),运营团队,运维团队,管理团队. 通常认为,用户,负责购买服务的群体, ...

  5. Android项目实战之尚硅谷_硅谷p2p金融

      该项目是一年前夏天自己查阅网上资料并观看视频学习做的的android实战项目,经过这次自学android项目使自己在andorid开发的过程中收益匪浅,所以现在自己将此项目贴于网络用于自己回顾和想 ...

  6. C语言项目-ATM自助取款机(无图形化界面)

    目录 1.项目介绍 1.1项目期望目标与内容 1.2 项目实现的主要过程 1.3分文件操作 1.4项目实现平台 1.5说明 2.项目的具体实现过程 2.1头文件BankCard.h编写 2.1.1结构 ...

  7. Bootstrap4+MySQL前后端综合实训-Day04-AM【新闻管理手机端页面+数据库操作(PowerDesigner 图形化数据库设计软件、SQLyog软件)】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记] 目   录 W3C标准盒子模型和IE盒子模型的区别 Bootstrap4--新闻管理手机端页面 菜 ...

  8. kafka 怎么样连接图形化界面_图形化编程有多简单,点亮LED不到一分钟

    Arduino编程在所有单片机当中应该说是最简单的了,但是还可以更加简单. 比如说图形化编程,图形化编程真正让Arduino大众化了,因为谁都可以通过图形化编程方式来制作自己需要的小玩意. 啃萝卜 关 ...

  9. python最简单的图形编程_图形化编程、Python、Java、C++到底哪个适合你?

    近两年,学习编程的热潮一波接一波,编程语言也是五花八门.盒子姐姐找到了一份2019年编程语言热度排行榜,其中,Java.C语言和Python高居榜首. 有些小伙伴就要问啦,编程语言这么多,区别在哪里呢 ...

最新文章

  1. 2840 页的计算机毕业论文,这位华人小哥的博士论文究竟写了啥?
  2. jsp与servlet之间页面跳转及参数传递实例
  3. 【Nodejs篇一】Node js 简介
  4. 4000字干货分享|一文学会搭建炫酷可视化大屏
  5. PHP学习笔记(一):理解匿名函数与Closure
  6. 非常不错的sharepoint webpart工具集
  7. iis负载均衡与文件同步[网摘]
  8. 通过界面生成时不存在的数据刷新界面引起的卡顿问题
  9. 窗口尺寸,文档高,元素宽高的获取方式
  10. Bean context must contain FilterChainProxy
  11. lua按钮unity_在Unity中使用Lua脚本
  12. Yaniv Erlich:DNA 很可能是人类终极的储存设备
  13. 金蝶K3系统中间层群集部署方案
  14. 【数据恢复案例】.[decrypt20@firemail.cc].eking新型变种勒索病毒
  15. haproxy编译安装以及配置文档介绍
  16. java.net.MalformedURLException: unknown protocol: jrt 异常解决方法
  17. Linux Mint 21编译Android kernel,遇到 multiple definition of `yylloc‘ 的错误解决
  18. win10 全局快捷键设置启动程序
  19. css消除点击或长按后的蓝色背景框
  20. 两款非常好的Redis 可视化管理工具:Another Redis Desktop Manager、QuickRedis

热门文章

  1. 大数据就业前景分析的太到位了【附:1T视频资料】
  2. 为什么R语言是学习数据分析的第一选择
  3. instring java_Decode a string in Java
  4. 【搜索引擎】lucene事务
  5. Mr. Bender and Square
  6. UE4加载osgb倾斜摄影数据
  7. 一种命令行解析的新思路(Go 语言描述)
  8. SLS控制台内嵌操作指南
  9. 阿里小二的日常工作要被TA们“接管”了!
  10. 用Python玩转时序数据