整理 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 混乱 的相关文章

  • 在centos上设置jenkins:ssh密钥和git的问题

    经历了很多问题 但似乎没有什么能解决我的问题 或者更准确地说 我不确定我是否正确地完成了整个事情 所以这里是 已安装centos 6 3操作系统 然后我按照以下指南安装詹金斯 https wiki jenkins ci org displa
  • 如何将 GIT 调用的输出获取到批处理脚本中的变量中?

    我有一个 git 命令来获取当前存储库的最新 SHA 如下所示 git log pretty format H n 1 我有一个 Windows 批处理脚本 我想按如下方式使用它 SET CURRENT SHA 但我不知道如何将从 git
  • 无法使用 git 推送或获取 [重复]

    这个问题在这里已经有答案了 我可以拉 但无法使用 git 版本 1 9 5 推送或获取 它突然开始给我以下错误 关于如何修复它有什么想法吗 git fetch fatal unable to access https email prote
  • 我可以忽略全局 .gitignore 吗?

    我的全局 gitignore 一般都很棒 但对于这个一次性项目 我不希望应用全局规则 如何删除这个怪异存储库的全局 gitignore 规则 在您的存储库中运行此命令 git config local core excludesfile f
  • 执行 git Push 时出现“diff.renamelimit 变量”警告

    我将本地提交推送到远程 git 服务器并收到以下警告消息 remote warning only found copies from modified paths due to too many files remote warning y
  • 在 .gitconfig 中隐藏 GitHub 令牌

    我想将所有点文件存储在 GitHub 上 包括 gitconfig 这需要我将 GitHub 令牌隐藏在 gitconfig 中 为此 我有一个 gitconfig hidden token 文件 这是我打算编辑并放在隐藏令牌的 git 下
  • TortoiseSVN 无法连接到 SlikSVN Subversion 服务器

    我已经在工作组中的一台计算机上创建了 SubVersion 服务器 从我的开发盒中 我可以毫无问题地访问存储库并签入 签出文件 我刚刚安装了 TortoiseSVN 无论我做什么 它都不会连接到服务器上的存储库 我收到臭名昭著的错误 无法建
  • Spring Cloud Config - 不允许使用 git-upload-pack

    我有一个在 docker 环境中运行的 spring boot 应用程序 它连接到 Git 存储库以获取应用程序的配置 我的问题是 当尝试获取 properties 文件时 应用程序有时会出错 这很奇怪 因为如果我更改用户和密码 同一个应用
  • 如何在 SVN 中分支单个文件?

    分支的颠覆概念似乎专注于创建整个存储库的 不稳定 分支 并在其上进行开发 是否有一种机制可以创建单个文件的分支 对于用例 请考虑具有多个特定于平台的源代码 c 实现的通用头文件 h 这种类型的分支是永久性的 所有这些分支都将不断发展 偶尔会
  • GitPython 检查 git pull 是否更改了本地文件

    使用 GitPython 我只想在拉取后本地文件发生更改时才调用函数 例如 如果我在一台单独的计算机上进行推送 然后拉第一台计算机 它按预期工作 但不提供任何输出 理想的输出是已更改的文件列表 或者只是告诉我拉动是否有错误 没有拉动 因为分
  • 您如何管理项目生命周期? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 您如何管理项目生命周期 例如 您从模板开始吗 您是否使用 SVN 等版本控制作为权威来源 您是否归档项目 如果归档 何时归档以及如何归档 当项目
  • 为什么cherry-pick 告诉我所有行都已更改?

    Updated 考虑文件 abc 在提交 A 和 B 中都相同 begin 123 456 789 klm end 在A中 我们重构第一行123 gt AAA并在结果之上选择 B Git 告诉我们all lines in the file
  • 合并后 Git 分支和提交历史记录

    我正在开发一个项目 单独 对于我开发的每个功能 我都会创建一个新分支 处理该功能 然后将其合并到 master 中 所以通常我不会同时在两个不同的分支上工作 也不会在一个分支上工作时接触master 当我合并一个分支时 我看到 使用gitx
  • 为什么 Git Bash 无法运行我的可执行文件?

    I am on git for windows https github com git for windows 吉特 巴什 我无法在命令行上运行可执行文件 Pedr Abc 07 MINGW64 c dev ls sqlite3 exe
  • 是否可以从 Github 网站或 API 获取分支合并列表?

    在我们的工作流程中 不会 直接 提交到主分支 主分支仅接收来自 Pull 请求的合并 我们可以将每次合并视为添加到主分支的新功能 因此 我想获得一个合并到 master 中的列表 作为一种可视化随着时间的推移添加到产品中的功能块的方式 gi
  • git rebase 吃了我的提交!为我翻译“git reflog”输出?

    我已经完成了五次提交 我想在推送它们之前将它们全部合并为一次提交 出于某种原因 我决定尝试通过与通常使用的不同的方式来做到这一点 FWIW 我试图按照此处的说明进行操作http gitready com advanced 2009 02 1
  • git 清除远程仓库

    如果我将错误的初始提交 或多个 推送到远程存储库 并且只想清除 销毁它 我可以通过命令来完成吗 将其从服务器中完全删除非常重要 这样它就不会占用磁盘空间 例如 今天我推送了一个完整的 Visual Studio 项目 其中包含 dll sd
  • 在比较 Delphi 表单文件的版本时,如何使 Beyond Compare 忽略某些差异

    我使用Beyond Compare 版本3 1 10 来比较不同版本的Delphi Form Files 但我不想看到有关ExplicitTop ExplicitLeft ExplicitHeight 和ExplicitWidth 的差异
  • 设置 git 别名,但调用它会给出“找不到命令”

    我想在 git 中设置一个别名来计算存储库中的总行数 因此我进入 Git Bash 并输入以下内容 git config global alias linecount ls files z xargs 0 wc l 我输入命令后 没有出现错
  • 对 Mac“捆绑”文件进行版本控制的最佳方法

    所以你知道很多 Mac 应用程序都使用 捆绑包 对于你的应用程序来说 它看起来像是一个文件 但实际上它是一个包含许多文件的文件夹 对于要处理此问题的版本控制系统 它需要 检出目录中的所有文件 以便应用程序可以根据需要修改它们 at chec

随机推荐

  • 没有办法在 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 个系统均未相互同步 一些更改发生在主分支上 其