防止 Master Branch 领先于 dev

2024-02-17

我们有一个非常标准的 git 工作流程,但我对一件事感到恼火:master 领先于开发,因为每次部署我们都会创建从 dev 到 master 的合并提交。

首先我们的工作流程:

  • master branch- 始终干净并可用于部署
  • development branch- 收集新功能/错误修复(如果有) 审查并批准
  • feature branch- 一个新的分支,只有 一项功能需要更改(它是分支的development branch)

每个成功的拉取请求(功能>开发)都会创建一个合并提交,这很好。

但是每次部署(开发>主控)也会创建一个合并提交只存在于master中。因此,在 20 次部署之后,主分支比开发分支提前 20 次提交。

你如何处理这种行为?你是否时不时地合并 master > dev (这实际上除了创建一个无用的合并提交之外什么也没做)?

重新调整开发分支似乎不是一个选择,因为那样每个开发人员都会丢失跟踪的远程分支。


您所要求的称为“快进”合并。既然您提到了拉取请求,我假设您正在使用某些东西来管理您的分支(GitHub、BitBucket 等),因此完成您想要的操作的确切说明可能会有所不同。


鉴于这种状态:

master o-o-o-o
              \
development    o-o-o

您的软件可能正在应用--no-ff合并时标记(这是标准行为,因为您希望在将功能合并到development)。从命令行来看,这相当于:

git merge --no-ff development

master o-o-o-o-------o
              \     /
development    o-o-o

但是,如果您想避免合并提交,您确实需要快进分支:

git merge --ff development (The --ff应该是不必要的,因为这是默认行为)

master/development o-o-o-o-o-o-o

Notes:

  1. 如果你这样做,你就会失去判断何时发生的能力。development被合并到master。这可能不是一个问题(或者您可能会以其他方式解决这个问题,例如使用标签)。
  2. 如果您确实有独特的提交master并且快进是不可能的,这仍然会创建合并提交。但是,您可以使用该标志--ff-only如果无法快进(无论是唯一提交master或已经是最新的)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

防止 Master Branch 领先于 dev 的相关文章

  • 在功能分支上运行测试

    我有一个构建配置 其中包含连接到 git 分支的测试 VCS 根dev 3 个构建步骤和 1 个触发器 这些是我的构建步骤 构建测试 运行测试 构建和部署 我想为分支运行所有这些构建步骤dev但只有其中两个 构建和运行测试 用于分支匹配fe
  • 仅将单个文件放入 git 子模块/存储库中

    我在 git 源代码存储库中有一个特定文件 其中包含生产设置 密码 我想限制此文件 以便只有制作团队的成员才能看到它 但是 我想控制它的变化 我考虑过在 git 中使用子模块 然后限制对新存储库的访问 然而 git 似乎需要子模块的整个子目
  • 返回到 Github Desktop 中的上一个提交

    我正在尝试使用 GitHub Desktop 即 GUI 应用程序 而不是命令行 返回到先前的提交 在同一分支上 我认为这是一个核心功能 因为它是首先使用源代码控制的主要原因 我可以看到可以恢复提交 但这并不是我真正想要的 因为它创建了一个
  • 从 Eclipse 的历史视图中删除 ORIG_HEAD 和 FETCH_HEAD

    我最近开始使用 Eclipse Kepler 和 EGit 插件 这些分支不是我习惯的 有没有办法永久阻止这些分支的创建 我尝试手动删除它们 但它不起作用 并且我不想在下次获取或变基时保留它们 据我从对您问题的评论中了解到 您只希望这些参考
  • Azure git 部署 - 第二个程序集中缺少引用

    我正在尝试将 Bitbucket 部署设置到 Azure 网站 我成功链接了 Bitbucket 和 Azure 但是当我推送到 Bitbucket 时 我在 Azure 站点上收到以下错误 如果我单击 查看日志 它会显示以下编译错误 D
  • 如何摆脱 gerrit 中的错误依赖关系

    看起来 当使用 gerrit 时 默认情况下所有更改都依赖于前一个更改 我不会分支进行新的更改 我只是在主分支上工作 然后将提交的更改推送到远程源 主分支 即使两次提交彼此无关 每次都会创建依赖关系 我遇到了一些问题 这让我认为我没有正确地
  • 垂直合并2个数据帧[重复]

    这个问题在这里已经有答案了 我有 2 个数据框 每个数据框有 2 列 相同的列名称 我想垂直合并它们以最终得到一个新的数据框 做的时候 newdf df merge df1 how left on Col1 Col2 新的 df 仅包含以下
  • 如何使用 LibGit2Sharp 从 Git 获取更改?

    下面的代码将 Git url 克隆到测试目录 var url http abc 555 com team project 555 git var path E temp 555 var credential new Credentials
  • 更改 Windows 安装的 Git Bash 中 ~ 目录的位置

    我什至不确定我问的是正确的问题 让我解释一下我的情况 这是关于 Windows 7 上的 Git 我的公司在网络驱动器上设置 Windows 用户目录 而不是在本地硬盘驱动器上 用于备份和超出本问题范围的其他目的 我无法改变这项政策 然而
  • 设置单独的遥控器以仅推送和拉动子文件夹

    假设我有两个存储库 repo A and repo B 其中包含一个文件夹 其中的代码与存储库 A 中的代码类似 这实际上如何发生并不重要 但是好吧 让我们假设我刚刚从 A 复制了内容 现在我想要以下内容 就像我在 repo A 中习惯的那
  • 如何更改全局 git 设置以在拉取期间进行 git 合并

    目前 我的全局设置设置为在 git pull 期间执行变基操作 我希望它默认将其更改为 git merge 如何更改此设置 TL DR git config global pull rebase false 有点细节 Git 使用配置pul
  • 将代码从没有权限的存储库推送到私有存储库?

    我有一个来自外部存储库 我们称之为 ExRepo 的文件夹 我没有任何推送权限 我有一个名为 MyOwnRepo 的个人存储库 如何获取 ExRepo 并将其合并到 MyOwnRepo 中 我已经尝试过这个 C Users
  • 无法快速删除 Git 中的许多文件

    我删除了 Git 分支中的 777 个文件新功能 by rm example 我愿意承诺 Git 要求我手动删除每个已删除的文件 git rm file 对于所有名称不相似的 777 个文件 编写上述命令将花费大量时间 如何删除我的 Git
  • Git 从 Netbeans 推送到 Gerrit

    我在将提交从 Netbeans 7 4 在 Linux 上 推送到 Gerrit 进行审查时遇到问题 我的git配置 core repositoryformatversion 0 filemode true logallrefupdates
  • git commit -m 与 git commit -am

    看起来很容易 但我就是不明白 我在我的应用程序的根目录中 这是我的工作流程 git add git commit m added a new feature some files changed git push heroku master
  • 如何克隆没有提交的裸 git 存储库并在克隆过程中获取正确的 HEAD 引用?

    这个答案 https stackoverflow com a 26898059 438273声称该问题已在版本中修复1 8 4 3 但是我在版本中还是遇到了2 25 1 它似乎在版本中按预期工作2 32 0 所以我不确定它是什么时候真正修复
  • 以编程方式将工作项关联到拉取请求

    我可以得到 https www visualstudio com en us docs integrate api git pull requests get a pull request https www visualstudio co
  • 如何正确设置 Azure DevOps 和 GitHub 之间的双向同步

    我想通过执行以下操作在 Azure DevOps 和 GitHub 之间创建双向同步 使用 CI 触发器创建 Azure DevOps 管道 将更改从 Azure DevOps 存储库推送到 GitHub 中的分支 创建第二个管道 用于侦听
  • Git 用户配置文件 - 自定义忽略

    我们有一个由 5 名开发人员组成的团队致力于硬件项目 我们有一个 user config h 文件 其中包含每个用户的特定环境和偏好的 defines 例如他们使用的硬件版本 是否应该打开声音等 目前 该文件位于我们的 gitignore
  • 在防火墙后面使用 GitHub,无需 SSH 访问

    我真的很想使用 GitHub 但我的公司一切都被锁定了 现在 我只能通过HTTP协议使用Tortoise SVN 我可以以同样的方式使用 GitHub 吗 如果是这样 怎么办 我认为你一直能够克隆github https github co

随机推荐

  • ngAnimate CSS 动画不适用于 ng-show 和 ng-hide

    DEMO http plnkr co edit cPDUWO p preview http plnkr co edit cPDUWO p preview 我在页面上显示了 2 个选中的复选框和 2 个小部件 单击复选框将使用ng show
  • 签署 F# 程序集(强名称组件)

    我在 CodeProject 上找到了这篇文章 http www codeproject com Articles 512956 NET Shell Extensions Shell Context Menus http www codep
  • python 中的“is”是如何工作的?

    请有人解释一下如何在 if 条件下使用 is 我正在使用分数模块 但遇到了一些麻烦 gt gt gt Fraction 0 1 is 0 False gt gt gt float Fraction 0 1 0 0 gt gt gt floa
  • 如何使用 IDisposable 修复内存泄漏

    我有一个 net 应用程序似乎存在内存泄漏问题 net 服务启动时大约需要 100MB 内存 但在负载下它会达到大约 400 500MB 我的大多数类都没有非托管资源 并且那些已经实现了 IDisposable 的类 所以我的问题是在我的课
  • 延迟加载加载图像后如何触发事件?

    我有需要绝对定位的图像 以便图像的中心位于其父 div 的中心 我已经有执行此操作的代码 我最近添加了延迟加载插件 它按预期工作 但我需要一种触发图像居中代码的方法after延迟加载已加载and图像淡入 我当前的代码基本上是这样的 jQue
  • 更改现有应用程序的证书指纹

    我有一个已发布到 Google Play 的现有应用程序 一切都很好 直到我换了一台电脑并且我的 sha1 指纹发生了变化 有没有可能的方法来更改 google play 开发者控制台中现有应用程序的 sha1 如果没有 我该如何处理 谢谢
  • 在 numpy 中乘以对数概率矩阵的数值稳定方法

    我需要获取包含对数概率的两个 NumPy 矩阵 或其他二维数组 的矩阵乘积 天真的方式np log np dot np exp a np exp b 由于明显的原因而不是首选 Using from scipy misc import log
  • 调用虚拟成员类的方法

    我知道该怎样virtual在成员函数的上下文中工作 但我在网上看到一篇关于虚拟成员类的文章 这让我感到困惑 我找到的例子是这样的 class Machine void run virtual class Parts The inner cl
  • GIT 无法从远程存储库读取

    我克隆了一个私人存储库 将其分叉 并对功能分支进行了一些更改 当我尝试将这些更改推送到存储库时 我收到以下消息 Permission denied publickey fatal Could not read from remote rep
  • Three.js 立方体每面都有不同的纹理

    我正在尝试创建一个 Three js 立方体 每个面上都有不同的纹理 基本上是一个骰子 这是在我的沙盒环境中 因此应该只生成一个旋转立方体 每侧都有骰子图像 1 6 完成后 我打算将其用于浏览器基础游戏 这个例子我只在 Chrome 中进行
  • IIS 的 ProxyPassReverseCookieDomain 等效项

    我使用 IIS 和 URL 重写作为反向代理 我的实际 Web 应用程序托管在无法直接访问互联网的服务器上 在重写规则中 我将反向代理的主机名替换为本地 IP 地址 这很好用 不过 我使用的应用程序提供下载 一旦客户端发出下载请求 服务器端
  • 禁用 jqgrid 的编辑(添加、编辑和删除)按钮而不是隐藏(默认行为)

    默认情况下 Jqgrid 使用值为 false 的适当属性隐藏添加 编辑和删除按钮 例如 导航网格中的 add false edit false del false 或其他方式 在这里 我想禁用这些按钮而不是隐藏 任何人都可以帮忙解决这个问
  • 获取给定进程的 STARTUPINFO

    是否可以获取另一个正在运行的进程的启动信息 我想找出命令行参数 是否应该最小化 最大化运行 在目录中启动 以管理员身份运行等 您需要从远程进程读取 RTL USER PROCESS PARAMETERS 这可以这样做 NTSTATUS Ge
  • 在调试时在注册类中调用 qmlRegisterType() 会导致应用程序崩溃

    我想用qmlRegiterType 在注册类本身中 我尝试使用此方法topic https stackoverflow com questions 37622694 call qmlregistertype in the registere
  • 在 ASP.NET Core 中获取控制器详细信息

    在 ASP NET 4 x 中 有一个ReflectedControllerDescriptor所在的类System Web Mvc 此类提供控制器的描述符 在我之前的应用程序中 我曾经这样做过 var controllerDescript
  • Codeigniter 的 Google 双因素身份验证教程

    有谁知道 Codeigniter 的 Google 双因素身份验证教程吗 这里 tutsplus 将双因素身份验证与 CodeIgniter 集成 http net tutsplus com tutorials php integratin
  • 使用分离器调整控件的大小超出父级的客户区

    我正在尝试使用拆分器复制大小调整 如 MS SQL Management Studio 中所述这个问题 https stackoverflow com questions 13909756 how to resize controls be
  • 如何将图像帧相机传递给 wasm (C++) 中的函数?

    我正在尝试构建一个 C 函数并使用 Emscripten 将其编译为 Wasm 该函数的作用是接收图像并对其进行一些处理并返回结果 我的第一个 POC 成功了 用户使用上传图像file输入 我使用传递图像的数据FileReader API
  • 如何将 MSSQL CTE 查询转换为 MySQL 5.7?

    我有一个 SQL 查询 with temp as select min ms date as start max ms date as end count sessionid visitor count category convert v
  • 防止 Master Branch 领先于 dev

    我们有一个非常标准的 git 工作流程 但我对一件事感到恼火 master 领先于开发 因为每次部署我们都会创建从 dev 到 master 的合并提交 首先我们的工作流程 master branch 始终干净并可用于部署 developm