| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 【Git技能】GitHub flow 与 Git 项目开发流程详解 -> 正文阅读 |
|
[开发工具]【Git技能】GitHub flow 与 Git 项目开发流程详解 |
目录一、简介???????我们常常会将自己的代码托管至一些代码管理平台进行托管,比如Github、Gitee、或是自己搭建的托管平台等,其中Git就是重要的传输控制工具。在一开始学习git的时候可能大多数小伙伴并没有合作和分支相关的概念,只是熟悉git最基本的pull、commit和push。如下图:
二、GitHub flow???????我们在工作中推荐使用GitHub flow 协作方式,即不在主仓库的分支上开发,而是 fork 到自己 workspace 下。每次开发,需要先checkout 一个新的分支,commit 之后推送到自己的仓库,再向主仓库提Merge Request。所以开发过程中对于大多数项目来说,都会经过如下步骤:
三、流程详解(0)添加SSH公钥???????为了代码和仓库的安全,我们通常使用ssh方式对代码仓库进行操作,这个操作比较简单,而且网上给出的方法很多,网友们可自行参考。 (1)Fork???????一般由项目组长建立代码的主仓库,剩余小组开发人员首先要对其仓库进行Fork,就是从主仓库将项目复制一份到自己的仓库,这个仓库只第一次需要操作。之后再进行clone处理,不要每次看见仓库就直接clone。 (2)Clone???????将项目组长建立的主仓库Fork之后,从自己的仓库进行clone,一般来说一个仓库会有两个分支,一个develop/dev,另一个是master,我们一般都在develop分支上进行开发,所以fork之后选择develop分支,再选择ssh的方式进行克隆:
???????该操作一般也只执行一次。 (3)添加远程仓库???????在我们把项目clone下来之后,我们在项目的根目录再次打开git bash,首先第一行显示的是一些基本信息:
???????一般常常关注的是最后括号内的单词,代表当前的分支。(之后详细说明分支)
???????项目刚拉下来的时候一般只有两个两个远程仓库的地址,一个用来fetch,一个用来push,并且这两个一般都一样,都是自己的远程源仓库origin,我们需要做的就是将项目组长所建立的主仓库添加进来:(upstream是远程仓库的代称,可随意名命)
???????我们可以看到成功将主仓库的地址,之后可以直接通过一下的方式push和pull代码:(切记不要直接push主仓库,原因后面会说,一般来说你也没有权限,记着push自己的仓库origin)
(4)查看分支和状态???????从第四步向后的所有操作,就是你每天都要重复的步骤了。
???????或是通过 git branch -a 查看本地和远程的全部分支:(remotes的为你的远程仓库origin下的分支)
???????我们也可以通过输入git status来查看当前分支和分支状态:
???????这个也会显示咱们所处的分支,已经该分支状态,目前就是告诉咱们分支已经是最新的了,没有什么要提交的。以上几个基础命令都是用的比较多的,要熟练掌握。 (5)新建分支???????当我要开始工作了,也就是要开始动工敲代码了,我们先不要一股脑的在develop分支上直接开敲,先打开git bash ,先pull一下主仓库保证代码最新,之后先新建一个分支,git checkout -b 分支名称:
???????可以看到我们成功新建了一个check分支并切换到了该分支上面,接下来你就可以进行你的代码工作了。你也可以通过git checkout develop再切换到develop分支上面:
(6)stash???????当你开发完功能之后,或者这一天结束了,想要提交代码了,这个时候你要明白一件事,你们是合作开发,主仓库的更新速度是要比你的快的,也就是说很多情况主仓库的代码都是要比你的新,所以你要先pull 主仓库的代码。但是直接pull代码可能会直接带来冲突,所以在此之前你需要提交或者将代码放入暂存区stash,这里我推荐放到暂存区里面保管:
???????将代码放入暂存区之后,直接
???????这样是不会产生冲突的,这时我们将暂存区的内容拿出来(暂存区是一个栈,后放入的内容排在前面):
???????一般使用pop:git stash pop = git stash apply stash@{0} + git stash drop stash@{0}。 (7)commmit & push???????接下来要将代码提交至本地仓库,首先要查看代码的状态:
???????在查看了状态之后,自行选择需要提交的文件:
???????这里的add通俗易懂就是选中的意思,选中你要commit的内容。之后执行:
???????Commit Message 每次提交,commit message 应该清晰明了,说明本次提交的改动和目的,禁止使用无意义的乱码或单个词语。示例:
???????这里的HEAD指当前分支,冒号后面指要push的分支,如果远程仓库没有,会自动在远程仓库创建该分支。(虽然HEAD:分支名称可以省掉,用默认的,但还是建议加上) (8)提PR???????我们到自己的远程仓库里,向主仓库提交分支合并请求,一般是自己这次工作创建的分支合并到主仓库的develop分支。以gitlab为例: (9)Code Review???????之后就是在项目负责人那边查看这个合并请求,进行Code Review,主要是:
???????Reviewer人员还可以对相关的代码做评论,点赞等等,再所有人觉得代码没有问题之后,便可以接收这次合并请求,你的分支就合并到了主仓库的主分支上,你的代码就算是加上去了。 (10)END???????在分支合并请求通过后,你这次的任务就算是完成了,你可以将本地的刚新建的工作分支合并到develop分支上,再删除该分支,例如这次工作新建的分支为check:
???????或者你也可以直接删除chek分支,pull主仓库来更新代码,也别忘了同步更新你自己的仓库。 (11)注意事项
???????这里推荐git的学习地址:Git教程 - 廖雪峰的官方网站 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/15 16:30:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |