整理 Git 混乱

2023-11-27

我刚刚继承了一个使用 Git 维护的项目。代码一度被部署到 3 个独立的系统上,每个系统都维护自己的去中心化 Git 存储库。

3个系统中的每一个都在3个不同的方向上扩展了原始的基础系统。这 3 个系统均未相互同步。一些更改发生在主分支上,其他更改发生在新分支上。

我如何将 3 个不同的来源整合在一起,以便我可以:

  1. 找到共同的合作基础;
  2. 找出哪些更改是错误修复,应在所有 3 个系统中应用;和
  3. 以一种合理的方式维护 3 个系统,以便只有一个公共分支,并将 3 个不同系统所需的定制分开?

我可能会首先将所有存储库推送到中央存储库中的单独分支,从中我可以轻松地在分支之间进行变基、合并等。

一个好的可视化工具,例如git-age, gitnub, gitx, giggle可以创造奇迹,但除非你能找到分支点,否则你的任务可能会相当乏味。如果有类似的补丁应用于您可以使用的所有分支(交互式)rebase重新排序您的提交,使它们处于相同的顺序。然后你可以开始“压缩”你的分支,通过将提交放入 master 来向上移动分支点。可以找到有关如何使用 rebase 重新排序提交的详细描述here.

很可能您需要采取的操作已在提供的链接中进行了描述Git 如何建立索引。一个好的备忘单触手可及总是很高兴。另外,我怀疑埃里克·辛克斯帖子的后续内容“DVCS 和 DAG,第 1 部分”将包含一些有用的东西(它没有,但仍然是一本有趣的读物)。

其他值得拥有的链接是:git 魔法, 准备好 Git and SourceMage Git 指南

我希望所有的存储库都有良好的提交消息,告诉您每个补丁的目的,就是这样或代码审查:)

至于如何维护定制,我们很幸运做到了以下几点:

我们首先将定制代码与通用代码分开(或保持分离)。然后我们尝试了两种方法;两者都运行良好:

  1. 所有部署都有自己的存储库,其中保存了自定义内容。
  2. 所有部署在“自定义”存储库中都有自己的分支。

在第一次部署并看到第二次部署之后,我们花了一些时间尝试预见未来的定制/切入点,以减少定制存储库(替代方案 1,这是我们当前使用的方法)和基础/核心中的重复回购。

是的,每当我们注意到核心/定制拆分滑动时,我们都会尝试无情地重构:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

整理 Git 混乱 的相关文章

随机推荐

  • 没有办法在 JavaScript 中拥有基于类的对象吗?

    基于 javascript 原型的面向对象编程风格很有趣 但是在很多情况下您需要能够从类创建对象 例如 在矢量绘图应用程序中 工作区在绘图开始时通常是空的 我无法从现有的 线 创建新的 线 更一般地说 动态创建对象的每种情况都需要使用类 我
  • 如何优雅地关闭嵌入式码头

    我有一个应用程序在嵌入式码头服务器上运行 现在我想启动 停止服务器作为服务 我使用脚本来启动服务器 java JAVA OPTS DREQ JAVA VERSION JAVA VERSION jar myjetty jar 主班 Serve
  • javascript:访问不同框架中的对象?

    如果我在 1 页上有一个框架集的 2 个框架 JS 有没有办法访问相对框架中的元素 Thanks 是的 但前提是两个框架上的页面位于同一域中 你可以做document getElementById frame id contentWindo
  • 如何在 RSS feed 上的 元素中正确放置日期

    我正在使用 RSS Graffitty 将 RSS 项目发布到 Facebook 页面 该应用程序告诉我这些项目缺少发布日期 所以我添加了这个标签 echo
  • 如何使用 Eclipse 处理 Boost.Test 输出

    我正在使用 Eclipse CDT 和 Boost Test 带有 Boost Build 我希望 Eclipse 能够解析构建期间运行测试套件期间生成的 Boost Test 的输出 有人知道如何实现这一目标吗 提前致谢 转至窗口 gt
  • Autofac命名注册构造函数注入

    Autofac是否支持在组件的构造函数中指定注册名称 示例 Ninject 的NamedAttribute 您需要使用顶部的 Autofac Extras Attributed 包来实现此目的 假设您有一个接口和两个类 public int
  • 使用 Android getIdentifier()

    我试过这个 r Resources getSystem getIdentifier ball red drawable com Juggle2 Log i FindBall R r 和这个 r Resources getSystem get
  • 使用花括号初始化列表调用显式构造函数:是否不明确?

    考虑以下 struct A A int int struct B B A 1 explicit B int int 2 int main B paren 1 2 3 B brace 1 2 4 的建设brace in 4 明确无误地呼吁 2
  • 如何隐藏滚动条上的灰点

    In Visual Studio 2015 2017 我们怎样才能隐藏Vertical Scrollbar的灰点如下图 如果您试图隐藏由 建议 而不是书签 引起的灰点 那么这就是具体的设置 Tools gt Options gt Envir
  • 调用第三方 API 时处理 CORS

    yes this is a very famous question I have tried many ways mentioned in the previous stack overflow QnA but nothing worke
  • PowerShell 3.0 新功能 [ordered] 的用例

    PowerShell 3 0 CTP1引入新功能 ordered 这在某种程度上是一个捷径OrderedDictionary 我无法想象它的实际用例 为什么这个功能真的很有用 有人可以提供一些有用的例子吗 示例 恕我直言 这是演示案例而不是
  • 在Java中生成所有排列[重复]

    这个问题在这里已经有答案了 可能的重复 生成给定字符串的所有排列 我在 Java 中有一个任意长度的数组 我想生成它们的所有可能的排列 对于固定长度执行此操作的简单方法是一系列嵌套的 for 循环 但由于数组的长度未知 因此这里不提供这种选
  • 数组/集合和 for Each 循环中的用户定义类型

    VBA 在弹出窗口中显示 不允许我迭代具有用户定义类型的数组 我写了一些代码 想知道如何解决这个问题 这是一个小例子 重点关注我想要做的事情 Option Explicit Type Info source As String destin
  • Magento - OnePage Checkout - 根据运输方式隐藏付款方式

    我已经问过这个问题Magento 堆栈交换没有任何成功 因此我现在在这里问 我正在使用 Magento Community Edition 1 9 0 1 并已正确创建和注册我的模块 但我似乎无法检测到运输方式 基本上 我想隐藏货到付款 i
  • 如何正确过滤数据表(datatable.select)

    Dim dt As New DataTable Dim da As New SqlDataAdapter s c c Open If Not IsNothing da Then da Fill dt dt Select GroupingID
  • Pandas 将多个数据帧与时间戳索引对齐

    这一直是我过去几天生活中的祸根 我有许多 Pandas Dataframes 其中包含频率不规则的时间序列数据 我尝试将它们对齐到一个数据框中 下面是一些代码 具有代表性的数据帧 df1 df2 and df3 我实际上有 n 5 并且希望
  • 数据路径“”不应具有附加属性(dryRun)

    我在 MAC 中安装了最新的 Angular 6 0 4 当我在终端中输入时 ng new happiness display Schematic input does not validate against the Schema dry
  • 如何使用 IntelliJ 从 Selenium/TestNG java 文件创建可执行 jar 文件?

    我已经在谷歌上搜索了好几天 试图找出如何做到这一点 如果有人之前这样做过 我将非常感谢您的帮助 我在 IntelliJ 中创建了一个自动化测试项目 可以自动执行用户与 Web 应用程序的交互 我想将该自动化测试 使用 Selenium 和
  • Apache Toree 和 Spark Scala 无法在 Jupyter 中运行

    我在 Jupyter 上运行 Scala Spark 时遇到问题 以下是我在 jupyter 中加载 Apache Toree Scala 笔记本时出现的错误消息 root ubuntu 2gb sgp1 01 jupyter notebo
  • 整理 Git 混乱

    我刚刚继承了一个使用 Git 维护的项目 代码一度被部署到 3 个独立的系统上 每个系统都维护自己的去中心化 Git 存储库 3个系统中的每一个都在3个不同的方向上扩展了原始的基础系统 这 3 个系统均未相互同步 一些更改发生在主分支上 其