文章目录

  • 一、入门试炼
    • 1. Git命令理解+准则
    • 2. Git分支换分思路
    • 3. 线上发布准备
  • 二、 实战前期准备
  • 二、场景实战
    • 模拟提交准备
    • 3.1. Git合并某个分支的某一/多次提交到指定分支
    • 3.2. Git合并分支
    • 3.3. 回滚/撤销指定某一/多次提交(建议使用,雁过留声、人过留名)
    • 3.4. Git合并冲突
    • 3.5. Git删除中间某一/多次提交记录和提交的文件
    • 3.6. 撤销回滚未未添加至暂存区文件
    • 3.7. 回退到以前的指定版本,之后提交的记录和提交的文件全部删除

这篇Git团队操作手册,模拟企业真实不同场景,实战团队一起怎样使用Git?
为什么这样使用Git?由我的真实经验总结而成,希望能够帮助小伙伴们提前熟悉企业中是怎样使用Git的环境。

一、入门试炼

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 远程项目地址扩展彩蛋:
9. 禁止向集成分支执行那些操作命令?1> 禁止向集成分支执行变更历史的操作<git rebase -i>2> 禁止向集成分支执行删除提交记录和提交文件的操作<git rebase -i>3> 禁止向集成分支执行强制推送远程操作操作git push -f origin <本地分支名>

2. Git分支换分思路

一般企业根据不同的环境划分为不同的分支,这样做的好处就是,分工明确、互不影响。简言之,开发负责开发、测试只负责测试。
常见的分支划分策略如下:

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

3. 线上发布准备

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

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

二、 实战前期准备

1.在远程仓库创建kernel_system项目
2.将远程仓库克隆到本地
3.初始化项目,添加一个README.txt文件项目说明
4.分别基于master分支,创建local、dev、test分支,
分别代表不同的开发或者测试环境,开发/测试/发布只需要切换分支即可。分支对照表:
master-生产分支
local-本地开发
dev-技术测试分支
test-回归测试分支
5.将本地创建的local、dev、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合并某个分支的某一/多次提交到指定分支

  • Git合并某个分支的某/多次提交到指定分支
紧急发布变更:
zhangsan的3个功能点和lisi的2个功能点都要发布测试,
wangwu的2个功能点暂时不发布。明确要做的事情:
zhangsan和lisi的5个功能点从local分支要发布到dev分支去申请技术测试。应该如何操作呢?
方案1((建议使用,这样不会出错):
正常流程,在dev分支,将zhangsan的3次提交和lisi的2次提交,合并到dev分
支即可。需要合并5次提交,因为每一次提交就是一个功能点,一条合并提交命令
即可。
方案1:
在lcoal分支上查看所有的提交记录,等会我们会用到提交<commitId>进行合并
提交处理
#查看Git提交记录
git log --pretty=oneline --abbrev-commit
#切换至dev分支
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即可
#将这2次提交(a52cf77 de17f44)合并到当前分支(不限制哪个分支)
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
#将dev分支合并到当前的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分支,重新编译打包,进行发布技术测试环境。
#执行原则:只要撤销指定错误提交修改的文件即可
#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仓库
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.将出错那笔提交的pick改为drop
#4.Esc,:wq
#5.同步远程仓库(注释本地和远程文件及提交记录是不一样的,在明确风险的情况下,因此采用强退)
git push -u -f origin master

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

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

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

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

git reset --hard 指定回退的提交的<commitid>
git push -f origin dev

创新小组 实战Git团队企操作手册_精华版本相关推荐

  1. 项目实战Git团队操作_图形化版本

    文章目录 一.分支思路 1. Git命令常用理解记忆 2. 分支换分规则 3. 线上发布准备 二. 实战前期准备 2.1. 在远程仓库创建kernel_system项目 2.2. 将远程仓库克隆到本地 ...

  2. git操作手册_基本的Git手册

    git操作手册 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you a little bit about ...

  3. 工具类软件操作手册_北京数字化的金蝶云团队-北京金普蝶软件科技有限公司...

    北京数字化的金蝶云团队 [rtfhkdrie] 企业典型案例石油股份湖南省分公司.湖南建工集团.中天建设.中铁五新隧装股份.湖南红星实业集团.湖南嘉德集团.湖南伊宅购股份.湖南城市英雄动漫娱乐.湖南湘 ...

  4. 用友nc操作手册_铁军人物汤轩宇, 入职两年,她用努力和汗水编制出单户试算操作手册...

    她在财务部一个默默无闻的工作岗位辛勤工作,大家不了解她的工作内容,当然也未知个中的艰辛,但她的岗位对于公司来说非常重要,所以她不敢有丝毫的怠慢,无论工作有多么艰难都要加班加点完成,她就是汤轩宇,201 ...

  5. 工具类软件操作手册_定位于营销管理软件,以服务汽修服务工厂店和社区店为主,敏煜科技:“BtoBtoC”是未来汽修软件的主流商用模式...

    作者 | 吴小平 来源 | 汽车服务世界(ID:asworld168) 欢迎供稿 | 吴骏:13116718090(同微信) 敏煜科技成立于2018年10月26日,公司研发的敏煜汽修小程序系统拥有自主 ...

  6. 工具类软件操作手册_全套广联达软件学习资料合集:教程+实例讲解+操作手册,一文搞定...

    要学习并掌握好算量软件,不仅仅需要软件知识,还需要各种造价相关知识,只有精通软件及造价知识,才能大大的提高算量的速度及准确度. 一个算量的高手掌握的不单是软件操作技术,还要掌握的是造价的基础知识,你要 ...

  7. 终于写完了!PyCharm操作手册 V1.0版本

    给大家推荐一下我朋友阿亮,最近写的PyCharm操作手册 以下为第三人称 之前有很多新手同学问我,有没有PyCharm的相关教程.我开始觉得这只是个工具,用多了自然就会,所以也没有太在意.直到有一天又 ...

  8. 系统操作手册_东芝CT操作手册——系统概述

    你点的每个赞,我都认真当成了喜欢 每天睁开双眼,你能看到一窗的阳光,请你微笑,这是生命的所赐,世界没有抛弃你.每天叫醒耳朵,你能听见家人的呼唤,请你微笑,这是生活的给予,幸福没有远离你.这一切都是清新 ...

  9. 工具类软件操作手册_【营销类公众号快速涨粉】公众号涨粉的技巧

    近期有很多客户咨询营销类公众号快速涨粉,看来大家对营销类公众号快速涨粉还有很多不明白的地方,那么今天我们就来聊聊关于营销类公众号快速涨粉,公众号涨粉的技巧希望能帮助到大家! 一.可以考虑利用喜马拉雅平 ...

最新文章

  1. 宁滨院士生前最后一场学术报告
  2. 【这些都不知道你就是个弟弟】Docker常用命令
  3. java获取指定倒退或向前的时间工具类
  4. 计算机数字雨教程视频,股票配资火爆cmd什么意思(cmd命令数字雨)
  5. lldp协议代码阅读_LLDP协议、STP协议 笔记
  6. 图像处理--最大内接圆
  7. 第二讲:高性能计算关键技术和趋势分析
  8. 韦伯-费纳希定律,前景理论及其在数据科学中的应用
  9. Google Earth Engine(GEE)——使用Combining reducers计算均值和标准差
  10. 【算法导论-37】Graph的Java实现
  11. 品质担当,有效提升办公生产力,永艺XY人体工学椅开箱实测
  12. 百度SEO高端软装设计装修设计公司网站源码
  13. 让你的闲置iPad/安卓平板成为你电脑屏幕的扩展显示器!
  14. 一阶shelf IIR数字滤波器的设计和实现
  15. RecyclerView用notifyDataSetChanged()刷新时候的图片闪烁
  16. 统计员工业绩app_统计员工业绩app
  17. 微软必应词典服务器,微软必应词典
  18. Android应用商店大全
  19. php 如何启动ica文件,什么是ICA文件?Win10专业版如何打开ICA文件?
  20. golang月薪10k应该具备哪些知识?

热门文章

  1. 边打工边研究数学 泸州“农民数学家”出版15本著作
  2. 清华90后博士后26岁已在《科学》发文6篇
  3. 代码传奇丨美女黑客张婉桥的“爱丽丝奇遇记”
  4. 2接口详解_java集合【2】——— Collection接口详解
  5. 浮点数的运算精度丢失
  6. 百度2015校园招聘软件开发笔试题及答案
  7. Elasticsearch Java Low Level REST Client(通用配置)
  8. MySql索引的原理
  9. ElasticSearch6.x 7.x Elasticdump 在线安装、离线安装
  10. ros(5)service client实现