Git 分支/变基良好实践

2024-01-12

我有以下场景:

3个分支机构:
- 掌握
- MyBranch 从 Master 中分支出来,目的是开发系统的新功能
- MyBranch Local 从 MyBranch 分支出来作为我的本地分支副本

MyBranch 正在针对其他开发人员(他们正在开发与我相同的功能)进行重新定位和推动。

作为 MyBranch 分支的所有者,我希望通过变基使其与 Master 保持同步。我还需要将对 MyBranchLocal 所做的更改与 MyBranch 合并。

有什么好的方法可以做到这一点?

到目前为止我尝试过的几种可能的情况:

I.
1. 将更改提交到 MyBranchLocal
2. 针对 Master 重新设置 MyBranch 基础
3. 根据 MyBranch 重新设置 MyBranchLocal 的基础
4. 将 MyBranch 与 MyBranch Local 合并

II.
1. 将更改提交到 MyBranchLocal
2. 将 MyBranch 与 MyBranch Local 合并
3. 针对 Master 重新调整 MyBranch 的基础
4. 根据 MyBranch 重新设置 MyBranchLocal 的基础

III.
1. 将更改提交到 MyBranchLocal
2. 针对 Master 重新设置 MyBranch 基础
3. 将 MyBranch 与 MyBranch Local 合并
4. 根据 MyBranch 重新设置 MyBranchLocal 的基础

我已经知道场景 III 似乎会严重扰乱提交历史记录,可能会重复提交。

你的经验是什么?您建议使用哪些方案来最大程度地减少合并工作并保持历史记录干净?


我个人的建议。这个专注于拥有直接的提交历史记录,并在“更具体”的分支上失败(你最好搞乱本地分支而不是功能分支)。

  1. 将更改提交到 MyBranchLocal
  2. 针对 MyBranch 重新设置 MyBranchLocal 基础
  3. 将 MyBranch 与 MyBranch Local 合并(应该快进) - MyBranch = Local
  4. Rebase MyBranch against Master
    1. (可选)将 Master 与 MyBranch 合并(也应该快进)
  5. 针对 MyBranch 重新设置 MyBranchLocal 基础
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git 分支/变基良好实践 的相关文章

  • 使用 TFS REST API 获取 Git 提交的最新关联工作项

    我正在尝试获取关联的工作项使用 TFS REST API 进行 GIT 提交 https www visualstudio com en us docs integrate api git commits 我的请求 URL 如下所示 htt
  • 如何停用 Xcode git 功能? (删除 git 集成)

    我的 Xcode 项目位于 git 上 但我不喜欢 Xcode git 集成 有时 我有来自 Xcode 的错误 https stackoverflow com questions 7388560 error fatal not a git
  • 如何恢复已删除的远程分支

    我们的远程主分支被删除 我有主存储库的本地副本 但它已经过时了 我可以通过将最后一个已知的提交哈希值插入 URL 来查看 github 中的分支 但未能成功恢复它 我尝试了几个步骤来恢复它 git reset hard 16deddc05c
  • Git 中的数据完整性?

    我现在已经多次听到提到 Git 提供数据完整性 但是 这是什么意思 据我所知 git 中的所有对象都是使用 SHA 1 校验和来访问的 并且该校验和是根据文件的内容计算的 这意味着如果文件发生更改 您将得到不同的校验和 但这如何提供数据完整
  • 删除 Xcode 项目的源代码控制

    我在 Xcode 项目上使用源代码控制已经有一段时间了 但现在我不想使用源代码控制 如何从 Xcode 中的项目中删除源代码控制 有三种方法 方法 1 将禁用所有项目的源代码管理 方法 2 将删除所有项目的单个存储库的链接 方法 3 将删除
  • 如果您使用 CocoaPods,您的 .gitignore 中会包含什么内容?

    我从事 iOS 开发已经几个月了 刚刚了解到有前途的可可豆荚 http cocoapods org 用于依赖管理的库 我在个人项目上尝试过 添加了依赖项Kiwi https github com allending Kiwi到我的 Podf
  • Git 删除其他人从远程所做的最后提交

    所以 我的情况是 错误地 我已经授予某人对我的分支的承诺 现在 在我的本地 我已经进行了提交 当我尝试将其推送到远程时 它显示远程在前面 因为对方已经将他的代码推送到了这个分支并进行了多次提交 现在 我可以从远程删除这些提交而不将拉取到本地
  • git am 和 git apply 有什么区别?

    Both git am https git scm com docs git am and git apply https git scm com docs git apply可用于应用补丁 看起来git am自动提交 而git apply
  • git merge --squash 和 gitcherry-pick 有什么区别?

    如果我在标准的主功能工作流程中工作 那么将功能分支压缩到主功能分支和将其挑选到主功能分支之间有什么区别 分支示例 m1 m2 master f1 f2 feature 我认为两者都有相同的输出 即 m1 m2 m3 master f1 f2
  • 使用nodegit切换分支/标签

    我整个早上都在尝试打开现有的存储库并使用 nodegit 更改分支或标签 文档内容很丰富 但似乎已经过时了 关于我做错了什么有什么想法吗 var NodeGit require nodegit var open NodeGit Reposi
  • 将 GIT 存储库中的文件标记为暂时忽略

    我们正在从 Perforce 迁移到 GIT 当然 我希望存储库中有一些文件 但个人开发人员不应该定期签入它们 诸如 eclipse 项目文件之类的东西 每个开发人员可能会获得初始的 project 文件 但随后会根据自己的环境稍微调整它
  • 为什么我们应该在 git commit 命令中使用 -m ?

    git commit m my commit 我们使用此命令将提交添加到我的 Github 存储库 这个 m 是什么意思 Do a git commit help m是为了留言 这将出现在您的提交历史记录中 例子 git commit m
  • gitbranch --merged 使用管道命令

    有没有办法达到相当于 git branch merged 使用 git 管道命令 我知道有类似的命令git for each ref它为您提供提交哈希值及其相应的引用名称 是否有一个命令可以判断某个提交是否可以从另一个提交访问 这基本上就是
  • 在 git svn fetch 期间解压树对象时发生致命错误

    当运行 get svn fetch 从上游 svn 存储库提取最新的新分支时 我收到此错误 git svn fetch fatal failed to unpack tree object 5ecb324e8b8fcb918acb253f3
  • 在 Jenkins 项目中加载私有存储库子模块

    我目前正试图让詹金斯 克隆项目及其子模块 使用部署密钥配置为 Github 私有存储库验证 Jenkins CI https stackoverflow com questions 5212304 authenticate jenkins
  • 当更改提交给子模块时,如何触发詹金斯中的构建?

    我们有一个带有外部子模块的 git 存储库 当子模块更改时 我们必须触发构建 您能否向我们建议如何使用 xtrigger 插件轮询子模块上的更改 使用 shell 脚本或监视文件还是其他更好 有关我们构建过程的更多信息 步骤1 使用子模块克
  • 有没有办法强制 git merge 始终使用外部合并工具?

    有没有一种方法可以配置 git merge 使冲突解决始终通过外部合并工具进行 我正在编写语义合并的配置 并且存在这样的情况 git 错误地处理了这些情况 但可以通过语义合并正确解决 两个开发人员在同一文件的两个不同位置添加了相同的方法 问
  • 如何编辑 git 中任何提交的提交消息? [复制]

    这个问题在这里已经有答案了 假设我有 3 个未推送的提交 现在我想更改第一次或第二次提交的提交消息 更改第三次提交的提交消息很简单 使用git commit amend 怎么做 回到子问题 是否有一个git commit amend对于先前
  • git GUI 中的 Git add (ctrl+A) 和 Stage to Commit (ctrl+T) 有什么区别?

    If git add CTRL A starts tracking changes AND stages changes to already tracked files why should I ever use Stage to Com
  • Git 预提交挂钩未在 Windows 上运行

    我刚刚开始研究 Git 挂钩 但我似乎无法让它们运行 我设置了一个本地存储库 因此我的项目文件夹中现在有一个 git 目录 我已将名为 pre commit cmd 的 cmd 文件添加到 C path to my project git

随机推荐

  • 我可以在嵌入式交互式 Python 控制台中使用 IPython 吗?

    我使用以下代码片段将其放入 Python shell 程序中 这工作正常 但我只得到标准控制台 有没有办法做同样的事情但使用IPython http ipython scipy org shell import code class Emb
  • 虚拟Qt信号?

    在查看一些 Qt C 代码时 我遇到了这个 class Foo Q OBJECT signals virtual void someSignal const QString str int n Q UNUSED str Q UNUSED n
  • HTTP 基本身份验证和 Atlassian JIRA、Confluence 和 Bitbucket

    我在 Apache 反向代理后面的服务器上部署了 JIRA Confluence 和 Bitbucket 他们中的每一个都通过应用程序链接与其他人连接 现在 我想通过在此之前实现 HTTP 基本身份验证来添加额外的保护层 当我这样做时 我会
  • 如何将任意数量的值绑定到 mysqli 中的准备好的语句? [复制]

    这个问题在这里已经有答案了 我真的希望有人花一点时间来检查我的代码 我正在解析一些新闻内容 我可以将初始解析插入到我的数据库中 其中包含新闻 URL 和标题 我想进一步扩展它 传递每个文章链接并解析文章的内容并将其包含在我的数据库中 最初的
  • MongoDB嵌套数组交集查询

    并提前感谢您的帮助 我有一个 mongoDB 数据库 其结构如下 id objectID userID id movies movieID movieID rating rating 我的问题是 我想搜索具有 userID 3 的特定用户
  • 此应用暂时禁用使用 Google 登录的功能

    当我们尝试向 Google 进行身份验证时 我们会看到以下屏幕 我们尝试验证的应用程序用于内部开发 我们没有将其发布给我们的用户 知道为什么会发生这种情况吗 我们之前遇到过 未经验证的应用程序 屏幕 如下所示 但现在身份验证被禁用 OAut
  • NodeJS 无法读取 ubuntu 中的默认 CA

    在我们的测试环境中 我们使用我们公司签名的 SSL 连接到另一台服务器 每次建立连接时 nodejs 都会抛出异常UNABLE TO VERIFY LEAF SIGNATURE 我通过设置找到了解决方法拒绝未经授权 false 但这不适用于
  • 当没有更多引用时,如何从缓存中删除智能指针?

    我一直在尝试使用智能指针来升级现有的应用程序 并且我正在尝试克服一个难题 在我的应用程序中 我有一个对象缓存 例如 我们称它们为书籍 现在 书籍的缓存是通过 ID 请求的 如果它们在缓存中 则返回它们 如果不在缓存中 则从外部系统请求对象
  • 分类:如果一个类的数据量是另一类的 4 倍,会发生什么?

    我正在尝试调试我的分类器的问题 问题在于 尽管准确率接近 80 但它总是针对给定输入预测相同的类别 我训练 CNN 来检测两个类别之间的差异 A 类有 2575 个 jpeg B 类有 665 个 jpeg 这是否会导致我的 CNN 始终预
  • Tomcat 8、axis2 webservices aar、spring jndi 未绑定在上下文中

    我一直在解决在 axis2 Web 服务运行的上下文中找不到 JNDI 名称的问题 当我使用 spring 时 仅在 Tomcat 8 中出现此问题 一些细节 我将提供相关的元素 1 服务 xml
  • 通过 REST api (v2) 将文章发布到公司 LinkedIN 页面

    使用 LinkedIn REST API v2 我正在寻找一种将文章发布到我公司的 LinkedIn 页面的方法 我已经在这里注册了https business linkedin com marketing solutions market
  • Xcode 11 Beta 5 未显示 Swift 5.1

    我已经从苹果网站下载了 XCode 11 并且正在尝试将我的代码升级到 Swift 5 1 但 XCode 没有提供该选项 另外 我没有看到可用的 iOS 13 模拟器 我以前从未遇到过这个问题 所以我错过了什么 我的操作系统已更新为 Ma
  • 如何在没有任何值得计算的事情发生的情况下减少 XNA 游戏 CPU 使用率?

    新的 XNA 游戏项目应用程序在窗口处于活动状态时会消耗相当多的 CPU 百分比 在我的台式电脑上 它大约是 2 核处理器的 1 个核心的 30 当窗口失去焦点时 游戏将进入空闲模式并消耗约 1 的 CPU 在我最近使用 XNA 制作的图像
  • 为什么非 vi* 的模态编辑器如此之少? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Pretty much every other editor that isn t a vi descendant vim cream vi e
  • 如何在《子弹物理》中控制玩家角色?

    我不知道你应该如何控制子弹中的玩家角色 我读到的方法是使用提供的 btKinematicCharacterController 我还从演示中看到了使用 btDynamicCharacterController 的方法 然而 手册中指出运动控
  • Azure Functions 是否适合长时间运行的任务?

    A TCP 主机服务器位于本地 现在 我需要从 Azure 环境连接主机服务器 连接建立后 主机服务器将不断发送消息 收到的消息将转发到Azure服务总线队列 我得到了以下架构 简化 该架构提出了一个功能应用程序 它将用于与本地服务器连接
  • 如何更改textmate中的文件类型

    当您在 Textmate 中打开新文件时 它会给您一个选择 它会询问您文件类型是什么 并让您为新文件选择语法 那么选择一次语法后如何更改文件语法呢 底部栏上有一个按钮 你按下它 它们就在那里 所有可能的语法模式及其快捷键
  • 用于插入另一个文档的 Google Docs 脚本

    我希望使用自定义菜单插入另一个整个文档 我的想法是 我创建了一组带有自定义表格的谷歌文档 然后用户可以从菜单中运行脚本来插入表格 模板 创建菜单很容易 createMenu 并添加我可以做的菜单项 但是我该如何创建一个脚本来复制另一个 go
  • Dockerfile 中的符号链接命令不会在容器中创建链接

    在我的 Dockerfile 中有这一行 RUN ln s var www html some file var www html another file 运行 docker build 时 会执行所有步骤 包括创建符号链接 但是当我使用
  • Git 分支/变基良好实践

    我有以下场景 3个分支机构 掌握 MyBranch 从 Master 中分支出来 目的是开发系统的新功能 MyBranch Local 从 MyBranch 分支出来作为我的本地分支副本 MyBranch 正在针对其他开发人员 他们正在开发