| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> gitflow工作流程思路 -> 正文阅读 |
|
[开发工具]gitflow工作流程思路 |
系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 文章目录前言认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对XXX做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章 提示:以下是本篇文章正文内容 一、git是分布式代码版本控制软件1.git的介绍Git是一个软件,所以需要安装。 2.安装git软件git如果装在自己电脑上就可以进行自己电脑的代码版本控制,但是不可以上传远程仓库(远程仓库就是github和gitlab的网站形式)
2、Mac装git方法
3、win装git方法 3. git各分区及切换逻辑及命令【重要】
把本地仓库暂存区的文件推送到远程仓库的某分支
把远程仓库的某分支拉取到本地仓库的工作区
把远程仓库的某分支拉取到本地仓库的暂存区
. 二、本地仓库版本控制1.进入要管理的工作空间(文件夹)
2.初始化git
在工作空间的根目录输入这行指令,之后会出现.git的隐藏文件,该文件是用于版本管理的 3.添加管理的文件
理论上修改过内容的文件都要添加到管理中 注意:
2、可视化管理源文件的添加管理add可以使用gitlens的源文件管理 3、git add .是添加所有未被管理的文件
4.检查工作空间中的文件的状态
用于检测改文件夹下各个文件的修改状态 【红色:未被管理的文件或者你修改过的文件】 【若出现nothing to commit.working tree clean,代表了现在是最新的版本,文件夹中的任何文件都没有被修改过】 5.保存备份到暂存区,生成版本号(1)方法一:生成新的版本号,添加新的版本说明
(2)方法二:不生成新的版本号,不添加新的版本说明,但是修改了文件内容
修改小组长review意见的时候可以用–要么按下面这么做修改,要么重新开一个merge requst的申请 6.查看各个版本的记录和信息(1)查看当前版本之前的详细信息
(2)把版本提交记录以图形的方式显示出来
(3)查看完整的版本信息
7.本地版本库回滚(1)历史版本回滚的目的 (2)回滚历史版本指令
(3)回滚到现在版本的指令
异常问题(1)个人信息配置:用户名、邮箱(按照run来输入指令来配置就行) 三、分支1.分支的作用开发新的业务功能和单独修复bug的时候会用到 新建分支是为了并行处理多功能开发(或者bug修复)的需求的–开发一个功能不影响另外的功能开发 分支的本地管理是相互独立的! 切换分支和回滚的操作都会使得代码改变 2.查看当前分支
3.创建/继承分支(1)方法一:
(2)方法二:
注意:在某分支代码上新建一个空的分支要先切花至被继承的分支上 4.切换分支
5.合并分支(1)子分支代码合并到主分支上的方法git merge origin <分支>与git rebase origin <分支>的区别 1、方法一:若知道merge的代码不会产生冲突的时候,可以直接merge(1)先切换回去主分支
(2)在主分支上把子分支的代码合并过来
或者用下面的方式 (1)先切换去子分支
(2)在子分支上把代码合并
Merge 要分清楚是哪个分支合并那个分支 . 2、方法二:若是提前知道要合并的代码会产生冲突,先在子分支上进行版本rebase来解决冲突使用下面的指令
(2)进行代码编辑插入,解冲突
变基rebase整理合并多个人开发的版本的时候会产生冲突,手动code compare解冲突就行了,解完冲突后编译通过你现在的代码就是master最新的,且没有冲突的代码版本 ,当没有冲突的时候就会自动合并到master主分支了 rebase是一个过程,会处于一个过程的分支,知道rebase完成,按着提示来就行,什么rebase --continue、rebase --amend、rebase --abort都是变基操作指令 (2)合并分支冲突的原因1、由于主分支master是大家维护的,主分支master上的更新速度是比个人开发的dev分支要快的(先提交代码的人先占坑),当个人的dev分支开发完成后,想要合并merge到主分支master上时master会产生很多冲突。 2、在本地仓库和远程仓库的代码不一致,开发的时候没有实时更新两个仓库导致偶然冲突,改变了同一个文件的同一段代码 提示 (3)合并代码原则1、把修改丰富后的代码merge到以前的代码 (4)解决冲突的办法遇到代码冲突问题需要手动进行代码对比,找到冲突的地方,沟通解决!! (1)方法一:【rebasede 方法】先把master主分支的代码合并到个人dev上,把dev分支进行丰富更新【用于添加大家修改过后的代码】(简单的处理一下冲突)。再把自己的dev分支merge到主分支上【用于添加自己修改的代码】 (2)方法二:【code compare】手动code compare工具来处理冲突,选择代码【merge失败自动在代码上添加冲突的标识符号和对应的代码】 (3)方法三:【知道改动了什么,手动移植】拉取最新的master代码,在这个基础上加入自己的代码 (5)避免频繁的进行代码冲突处理的方法代码开发最好是一直用一个版本,一口气开发直到开发完毕,不然很难避免要处理合并冲突的问题! (6)推master分支和推自己分支的区别merge代码会产生冲突,push代码也会产生冲突。 若推送到master上才需要合并merge(需要解决合并冲突和代码review),若推到自己的分支上则不需要进行review,修改代码后如果出现代码冲突可以强推
(7)解决merge冲突的软件工具(1)beyond compare . ### (8)merge request注意事项 当同一个分支申请主分支merge request合并没有通过的时候,再用该分支申请代码合并merge request是不行的,需要撤销之前的申请再去申请 (9)合并代码格式检查和编译检查,保证代码经过rebase可以直接merge到主分支合并代码可以进行代码的格式检查和编译是否通过的自动检查 . ## 6.删除分支
注意:要在master分支上进行操作 四、远程仓库托管(项目>分支>版本)1.Git与github\gitlab的区别Git和github\gitlab是两个不同的东西,git是一个软件,Github和gitlab都是一个云端网站而已。 2.使用远程仓库的方法(1)注册一个github账号自行百度 (2)在github中新建一个仓库在网页上按提示操作就行 (3)本地代码推送到远程仓库推送后,远程仓库和本地仓库的分支还是其他都是一致的(远程仓库可以理解成百度网盘,本地编辑好了代码只管网上推) 1、添加远程链接(给远程仓库的地址起一个别名origin)
2、向远程仓库推送代码
-u 的意思是默认操作的意思,试过一次git push -u origin <远程仓库的一个分支名>的指令,下一次直接git push就行了,默认推送到上一次的远程仓库和分支,当要修改推送的分支的时候再写一次**git push -u origin <远程仓库的一个分支名>**来重定向一次就行 $git push 如果只有这个指令,就是代表把本地库上的当前分支推送到远程库上次默认的分支上(一般在本地仓库地址当前的分支上操作,默认就是推当前分支!) 养成良好的习惯,一般就每次推送代码都加上远程库的分支名
. (4)变基rebase,对过程版本及信息合并推送【合并merge代码中有用】(1)过程版本的定义 第一步:git rebase 分支名
第三步:修改要整合的信息 (3)rebase作用二
2、然后把要插入主线的版本分支记录插入主分支。
3、最后把dev合并merge到master上。
(4)可视化的rebase工具 使用gitlens中的可视化操作来变基rebase 进行本地不同版本的合并 (5)从远程仓库中下载代码
注意:拉代码是一拉全部分支都拉下来,推送代码是指定远程库分支,一个一个分支去推 (6)切换远程仓库分支
(7)拉取最新的代码
如果你没有下载过工程代码就用$git clone,如果你有下载过代码了就更新一下代码就行了,在最新的代码上进行开发 拉取代码的原则 git强拉分支的方法
原理是版本回退到和远程主分支的版本,然后拉取代码 五、多人协同开发gitflow工作流程思路1.标准的gitflow工作流图【重要】每一个人都有自己的分支,自己维护自己的分支,在自己的分支上写代码 2.创建初始项目和版本3.修改项目版本号4.开发成员注册一个github/gitlab的账号5.添加开发成员并设置权限6.开发成员在自己的分支上进行开发(和上面说的步骤是一样的) 7.架构师或小组长code review–Pull/merge request(1)经过以下设置,开发成员想要pull或者merge代码就要先申请权限去code review github如下操作: gitlab如下操作: (3)小组长进行推送与合并异常处理,并删除开发成员原有的开发分支 8.修改request问题单的技巧步骤1、在本地仓库切换到问题单的分支及其对应版本 步骤2、修改代码并git commit --amend,改内容不改提交信息 步骤3、推送代码到自己分支上,推不上就force强推,当推送分支后,问题单的代码自动改变 步骤4、通知小组长再进行merge代码,直接merge看看成不成功,不成功基于rebase,直到成功后push 9.小组长或者测试人员提测上线(1)创建一个测试发布版本
(2)测试人员获取版本进行测试,没问题测试人员就提交到master,有问题就反馈bug (3)开发人员另开一个分支进行修bug【一般在这个阶段不进行新的业务开发】 六、远程开发的方法使用gitlab(github就不用了),在非公司的地方开发代码的方法就是做一个访问公司服务器的vpn . 七、拉取代码与推送代码1.从master拉取代码下来并copy并切换到自己的分支上的方法
git checkout - b <新分支名> 相当于git branch <新分支名> + git checkout <新分支名> 其中, $git checkout <新分支名>用于切换到该分支上 注意: 2、【搞一个属于自己分支来做开发】继承了主分支的基础上进行代码开发,不要直接在别人的或者上线的代码上进行开发 3、SSH Key 第1步:创建SSH Key 第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面,设置SSH和keys 因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。 当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。【防盗标记–盒子君hzj】 确保你拥有一个GitHub账号后,我们就即将开始远程仓库的学习 2.把本地仓库分支上的代码推送到远程仓库的仓库上的方法1、在本地仓库上先切换到对应的分支
2、代码开发 3、推送至远程仓库上对应的分支上
【成功后远程仓库就有自己的分支了】 3.在git中基于哪一个分支都是可以进行push、pull和merge操作操作是一个相对的,理解了文件数据流的方向就可以,总的来说遵循一个原则 在<>中的都是–<相对于当前分支的目标分支> . . 八、vscode编辑器的git插件gitgraph插件(相当于git log的可视化)(1)作用 . . ## Gitlens插件(历史版本源代码对比) **(1)作用** 项目仓库各个版本的操作及历史源代码对比 1、可以看到各个commit的版本中修改了什么文件,与历史的版本对比得到修改的部分是什么(做review) (2)使用方法 九、git 常见的问题处理方法汇总这个把之前的异常冲突的地地方进行回退
把文本内容退回上一次编辑的位置
历史修改的文件对比(用vscode 的gitlens插件更好)
总结重要的是学习git的原理和gitflow使用流程 一般来说,远程仓库的分支名和本地仓库的分支名要一致,本地仓库一般不会存在很久的,所以,最好还是本地仓库和远程仓库的分支是一直的比较好 我们只能切换本地仓库的分支,不能切换远程仓库的分支的!在本地仓库中创建和切换对应的分支直接推送到远程端时,远程端就有对应的分支了 –代码开发版本要进行记录(每天写完或者开发完的功能都要写清楚,commit到自己的本地仓库) 【搞一个属于自己分支来做开发】继承了主分支的基础上进行代码开发,不要直接在别人的或者上线的代码上进行开发 git checkout 和git branch功能很像,$git branch更“厉害些”,git checkout - b是结合体! git add *.cpp git add *.h 继承式创建分支推送!(本质上本地仓库的分支名和远程仓库的分支名没有关系,不同分支名也可以推送) merge requst和commit要经常做,有一点小改变就要做,不要改了一大堆之后才做,大幅度修改后在提交merge requst和commit会产生很多的冲突 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 18:32:10- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |