返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >Git工作流模式及命令的使用讲解
  • 671
分享到

Git工作流模式及命令的使用讲解

2024-04-02 19:04:59 671人浏览 独家记忆
摘要

目录git的工作方式集中式工作流功能分支工作流Gitflow工作流维护分支工作流程Forking工作流Pull RequestGit的工作方式 分为集中式工作流、功能分支工作流、Gi

Git的工作方式

分为集中式工作流、功能分支工作流、Gitflow工作流和Forking,其中集中式工作流和功能分支工作流是已经使用过的,Gitflow和Forking两种工作流暂时没有使用过。

集中式工作流

一个远程仓库,一个主分支master,团队每个成员都有一个本地仓库,在本地仓库中进行代码的编辑、暂存和提交工作:

git add <some file> 或 git add .>
//`some file`代表要暂存的文件,`.`代表工作目录下的所有文件
gie commit -m "一些描述"
//提交文,描述指的是本次提交修改了什么功能或者修改了什么bug,方便以后的查看
git push -u origin master
//-u选项设置本地分支去跟踪远程对应的分支。设置好跟踪的分支后,就可以使用git push命令省去指定推送分支的参数
//发布本地仓库到远程的中央仓库中,origin是远程仓库名,master是参数告诉Git的分支,master代表主分支,当然分支可以不是主分支

注意:在一种情况下push命令会出错,即如果小明第一次发布代码到远程仓库,此时小红在 本地开发自己的功能,那么在小红push自己的本地库到远程的时候会报错,原因是小红的本地库和远程库有分歧,需要先pull远程库到本地,与本地库合并之后再push到远程库。

功能分支工作流

在集中式工作流的基础上,为各个新功能分配一个专门的分支来开发,即在master主分支外在创建一个分支,程序员开发的新功能全部push到此分支上,等到功能成熟的时候再把此分支合并到主分支master上

git checkout -b newbranch master
//checkout代表创建切换带新分支newbranch
//-b代表如果新分支不存在则会创建一个新分支
//最后的master代表新分支是基于主分支创建的

新分支创建之后,对其的编辑、暂存和提交工作与之前一样,对其push的命令变为

git push origin newbranch

等到新功能完善之后,通过以下命令:

git checkout mastergit pullgit pull origin newbranchgit push

首先git checkout master切换到主分支,然后执行git pull把本地仓库的主分支上传到远程库,再执行git pull origin newbranch保证合并newbranch分支和已经和远程一致的本地master分支,你可以使用简单git merge newbranch命令,但前面的命令可以保证总是最新的新功能分支。 最后把更新的master分支重新push到远程库。

Gitflow工作流

Gitflow工作流没有用超出功能分支工作流的概念和命令,而是为不同的分支分配一个很明确的角色,并定义分支之间如何和什么时候进行交互。
除了有master主分支(用于存储正式发布的历史)外,还有一个作为功能集成分支的develop分支。当初始化完成后,某个程序员想要开发一个性能,并不是直接从master分支上拉出新分支,而是使用develop分支作为父分支,当新功能完成后,再合并会父分支,新功能的提交并不与master分支直接交互。


一旦develop分支上有了做一次发布(或者说快到了既定的发布日)的足够功能,就从develop分支上checkout一个发布分支。 新建的分支用于开始发布循环,所以从这个时间点开始之后新的功能不能再加到这个分支上—— 这个分支只应该做Bug修复、文档生成和其它面向发布任务。 一旦对外发布的工作都完成了,发布分支合并到master分支并分配一个版本号打好Tag。 另外,这些从新建发布分支以来的做的修改要合并回develop分支。

维护分支

维护分支或说是热修复(hotfix)分支用于生成快速给产品发布版本(production releases)打补丁,这是唯一可以直接从master分支fork出来的分支。 修复完成,修改应该马上合并回master分支和develop分支(当前的发布分支),master分支应该用新的版本号打好Tag。
为Bug修复使用专门分支,让团队可以处理掉问题而不用打断其它工作或是等待下一个发布循环。 你可以把维护分支想成是一个直接在master分支上处理的临时发布。

工作流程

为master分支配套一个develop分支

git branch develop
git push -u origin develop

以后这个分支将会包含了项目的全部历史,而master分支将只包含了部分历史。其它开发者这时应该克隆中央仓库,建好develop分支的跟踪分支:

git clone ssh://user@host/path/to/repo.git
git checkout -b develop origin/develop

现在每个开发都有了这些历史分支的本地拷贝。
小红和小明开团队成员始各自的功能开发。他们需要为各自的功能创建相应的分支。新分支不是基于master分支,而是应该基于develop分支:

git checkout -b some-feature develop

他们用老套路添加提交到各自功能分支上:编辑、暂存、提交:

git status
git add <some-file>
git commit

添加了提交后,功能OK了之后,如果团队使用Pull Requests,这时候可以发起一个用于合并到develop分支。 否则她可以直接合并到她本地的develop分支后push到中央仓库:

git pull origin develop
git checkout develop
git merge some-feature
git push
git branch -d some-feature

第一条命令在合并功能前确保develop分支是最新的。注意,功能决不应该直接合并到master分支。 冲突解决方法和集中式工作流一样。

Forking工作流

分布式工作流,充分利用了Git在分支和克隆上的优势,既可以管理大团队的开发者(developer)和接受不信任贡献者(contributor)的提交。这种工作流使得每个开发者都有一个服务端仓库(此仓库只有自己可以push,但是所有人都可以pull修改),每个程序员都push代码到自己的服务端仓库,但不能push到正式仓库,只有项目维护者才能push到正式仓库,这样项目维护者可以接受任何开发者的提交,但无需给他正式代码库的写权限。
这种工作流适合网上开源社区的开源项目,大家统一对项目做贡献,但是有一个人或一个团队作为开发者来管理项目,所有的贡献者的代码由开发者审核,其功能完善之后再由开发者push到正式仓库中。

Pull Request

Pull Request是一个为讨论提交功能的专门论坛,是一个友好的WEB界面(在个人GitHub项目中也有这样一个选项),大家在其中做一些Code Review的工作,把结果反馈到Pull Request中,还可以在其中push新的提交微调功能,等到讨论结束后醒目维护者合并所有的功能到官方仓库中,关闭Pull Request。

发起一个Pull Request&#xff0c;就是要请求另一个开发者来pull自己仓库的一个分支到它的仓库中,因此需要提供四个信息:源仓库、源分支、目的仓库、目的分支。

Pull Request可以用于上述除了集中式工作流的其他三种工作流,因为其要求要么分支不同,要么仓库不同,而集中式工作流只有一个仓库,一个master分支。

例:

在功能分支工作流中使用Pull Request

功能分支工作流只有一个公开的仓库,所以Pull Request的目的仓库和源仓库总是同一个。 通常开发者会指定他的功能分支作为源分支,master分支作为目的分支。

收到Pull Request后,项目维护者要决定如何做。如果功能没问题,就简单地合并到master分支,关闭Pull Request。但如果提交的变更有问题,他可以在Pull Request中反馈。之后新加的提交也会评论之后接着显示出来。

在功能还没有完全开发完的时候,也可能发起一个Pull Request。 比如开发者在实现某个需求时碰到了麻烦,他可以发一个包含正在进行中工作的Pull Request。 其它的开发者可以在Pull Request提供建议,或者甚至直接添加提交来解决问题。

参考:Http://shouce.jb51.net/gitbook/Distributed-Git/Distributed-Workflows.html

以上就是Git工作流模式及命令的使用讲解的详细内容,更多关于Git的工作流模式命令使用的资料请关注编程网其它相关文章!

--结束END--

本文标题: Git工作流模式及命令的使用讲解

本文链接: https://lsjlt.com/news/146980.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Git工作流模式及命令的使用讲解
    目录Git的工作方式集中式工作流功能分支工作流Gitflow工作流维护分支工作流程Forking工作流Pull RequestGit的工作方式 分为集中式工作流、功能分支工作流、Gi...
    99+
    2024-04-02
  • Git工作流模式及命令怎么使用
    今天小编给大家分享一下Git工作流模式及命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Git的工作方式分为集中式...
    99+
    2023-06-30
  • 一文讲解Git的工作流程
    Git是一个流行的分布式版本控制系统,它可以帮助团队协作开发代码。在使用Git时,开发人员需要了解工作流程,以便能够更好地协作工作。接下来,本文将讲解Git的工作流程。一、Git的基本概念在深入讨论Git的工作流程之前,我们先了解一些Git...
    99+
    2023-10-22
  • python命令行模式的用法及流程
    1、使用cmd打开命令行窗口。 2、在输入python时,进入python交互模式。 3、输入exit(),退出交互模式,在命令行模式下运行.py程序。 实例 C:\Users\8...
    99+
    2024-04-02
  • git工具常用命令及ssh操作方法
    目录git基础命令暂存,本地仓库,远程仓库,本地代码拉取其他分支合并分支代码提交版本穿梭注意点SSHgit基础命令 git clone ‘远程仓库地址' 第一次从仓库拉取代码 git...
    99+
    2024-04-02
  • Java超详细讲解设计模式中的命令模式
    目录介绍实现个人理解:把一个类里的多个命令分离出来,每个类里放一个命令,实现解耦合,一个类只对应一个功能,在使用命令时由另一个类来统一管理所有命令。 缺点:如果功能多了就会导致创建的...
    99+
    2024-04-02
  • git的使用方法及常用命令
    本篇内容介绍了“git的使用方法及常用命令”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!git在团队项目中的使用流程首先从一个git远程仓库...
    99+
    2023-06-09
  • JavaScript状态模式及适配器模式使用讲解
    目录一、状态模式1.基本实现2.状态模式的优缺点3.状态模式中的性能优化点二、适配器模式一、状态模式 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类 1.基本...
    99+
    2022-12-30
    JavaScript状态模式 JavaScript适配器模式
  • redux工作原理讲解及使用方法
    目录1. redux 是什么?2.redux的原理3. 如何使用 redux?(1).安装redux,创建redux文件夹,建立store.js(2).建立reducers.js(3...
    99+
    2024-04-02
  • 详解使用IDEA模拟git命令使用的常见场景
    大家好,最近白泽第一次开始参与小组合作开发,以前都是自己用git保存自己的代码,自己维护,用git的场景也比较单一,没有遇到过拉取代码合并出现冲突的问题。但是小组开发拉取远程仓库的代...
    99+
    2024-04-02
  • Git中bundle命令的使用详解
    目录1. 打包2. 验证3. 查看分支4. 导入bundle4.1. 没有gitlab服务器4.2. 有gitlab服务器4.2.1 从bundle中clone4.2.2 从bund...
    99+
    2024-04-02
  • python命令模式的作用是什么
    python命令模式的作用是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pil...
    99+
    2023-06-14
  • 工作流引擎会签,加签,主持人,组长模式 专 题 讲解
    ...
    99+
    2019-12-23
    工作流引擎会签,加签,主持人,组长模式 讲解
  • 详解Git 的 rebase 命令使用方法
    在基于 Git 的开发过程中,我们很容易遇到合并代码的情况,例如我们从 master 分支拉取了一个 feature 分支,当我们开发到一段时间之后,可能需要将 master 的代码...
    99+
    2024-04-02
  • Nginx工作模式及代理配置的使用细节
    目录一、Nginx 的工作模式1.单进程模式2.Master-Worker 模式3.问题处理二、Nginx 代理配置1.带 /2.不带 /一、Nginx 的工作模式 1.单进程模式 ...
    99+
    2024-04-02
  • 实例讲解Python设计模式编程之工厂方法模式的使用
    工厂方法模式是简单工厂模式的进一步抽象和推广,它不仅保持了简单工厂模式能够向客户隐藏类的实例化过程这一优点,而且还通过多态性克服了工厂类过于复杂且不易于扩展的缺点。在工厂方法模式中,处于核心地位的工厂类不再...
    99+
    2022-06-04
    模式 实例 工厂
  • 解锁团队项目的潜力:PHP Git 与协作式工作流程
    在现代软件开发中,团队协作至关重要。PHP Git 与协作式工作流程为团队提供了一种高效且可扩展的解决方案,以释放其项目潜力。 Git 概述 Git 是一款分布式版本控制系统,允许团队成员协同管理代码更改。它提供了一个分支和合并模型,使团...
    99+
    2024-04-02
  • PHP设计模式中的命令模式怎么使用
    这篇文章主要介绍“PHP设计模式中的命令模式怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP设计模式中的命令模式怎么使用”文章能帮助大家解决问题。命令模式(Command Pattern...
    99+
    2023-07-05
  • Golang工作池的使用实例讲解
    目录一、概念二、实例1.简单示例2.读入数据一、概念 我们可以将工作池理解为线程池。线程池的创建和销毁非常消耗资源,所以专门写一个pool,每次用过的线程池再放回pool中而不是销毁...
    99+
    2023-02-20
    Go工作池 Go工作池的使用 Golang工作池
  • Angular中的结构指令模式及使用详解
    目录你将学到什么Angular 结构指令是什么?Angular 结构指令是怎么工作的?结构指令的例子怎么使用 *ngIf 指令怎么使用 *ngFor 指令怎么使用 *ngSwitch...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作