某些提交中缺少 git-svn-id

2023-12-14

我有一个旧的 SVN 存储库,我使用它签出了git-svn为了解决这个问题并推送到 Heroku。我做得相当标准git push heroku master, git svn rebase, git svn dcommit跳舞,一切都很好。

然而,最近我做了相当多的 git 工作,但没有做过git svn rebase等一下。现在,当我尝试进行变基时,由于合并冲突,它失败了,尽管我是唯一提交到存储库并且只在 master 上工作的人。

认为这可能是工作副本的问题,我做了一个新的git svn clone然后一个git remote add heroku and git pull heroku master。拉动可以毫无问题地进行快进合并,但是git svn rebase仍然失败。

我做了一个简单的git log我发现我缺少一些旧的提交git-svn-ids:

commit def8bab861314c67d4e8227e03775d19045d21d1
Author: peterr
Date:   Fri Sep 21 16:17:33 2012 +0000

    PHP Cedar support.

    git-svn-id: http://vcp.unfuddle.com/svn/vcp_bbsit@24 b6b24ac3-8b7a-4c11-a811-49c5d0334e85

commit f51bd78fb07dde6ec1dc4e0ba51a48f2b6bd1bd6
Author: pr1001
Date:   Mon Aug 20 19:39:42 2012 +0200

    Specify port correctly

commit 153bb2929080898dcab46142120def0f4964dfab

...

commit 5a416fa3af9f64aa353d5171bedfaa563115ff62
Author: pr1001
Date:   Mon Aug 20 17:22:58 2012 +0200

    PHP Cedar support.

commit e0b35588d03082a3a4ab49a7b590f206346046c0
Author: j
Date:   Fri Aug 3 08:13:33 2012 +0000

    change email

    git-svn-id: http://vcp.unfuddle.com/svn/vcp_bbsit@23 b6b24ac3-8b7a-4c11-a811-49c5d0334e85

From 一个如此的答案我认为我也许能够重写提交消息以添加丢失的信息,但我想知道这是否会更糟。

查看消息,看起来我有一些重复的提交,例如“PHP Cedar support”。我真的很困惑为什么我有这些重复项,尽管我怀疑它们可能会转发给失败的人git push heroku master有一天,我被告知存储库不同步。git pull heroku master似乎完全没有带来任何变化并解决了问题,但也许它带来了重复的提交。

因此,鉴于这一切,我的问题很简单,我该如何进行?我在 Heroku 上有一个工作应用程序,在 SVN 存储库中有一个较旧的工作代码库,但我没有看到任何简单的方法如何干净地将较新的提交放入 SVN。我应该挑选它们吗?那么我是否需要对 Heroku 应用程序进行核攻击才能不让重复项回来?


很难猜测你是如何陷入这种情况的,但我认为这是因为当推送到 SVN 时,git-svn 用 git-svn-id 签名替换(使用 rebase 或重置)提交,因此每个提交有 2 个示例: “本地”——没有“git-svn-id”签名——而远程则带有签名。

恢复:

  1. 创建一个临时分支来保持当前状态(某种 备份):git co -b backup
  2. 确保 refs/remotes/git-svn 指向与您的 subversion 存储库相对应的 git-svn-id 的最新提交,并且没有显示没有 git-svn-id 的提交git log refs/remotes/git-svn

如果不是这样,您可以使用以下技巧来修复 refs/remotes/git-svn: 更新 refs/remotes/git-svn 以指向一切正常的最新提交(在您的情况下,它对应于 r23):

$ git update-ref refs/remotes/git-svn e0b35588d03082a3a4ab49a7b590f206346046c0

设置 .git/svn/metadata revisions 以指向该修订版:

[svn-remote "svn"]
        reposRoot = ...
        uuid = <UUID>
        branches-maxRev = 23
        tags-maxRev = 23

删除(或最好移走)文件 .git/svn/refs/remotes/git-svn/.rev_map.UUID 现在运行

$ git svn fetch

您的 refs/remotes/git-svn 参考现已恢复到最新的有效 SVN 修订版。

3.从 Git 存储库获取所有更改而不合并

$ git fetch heroku master

现在您的所有更改都在 refs/remotes/heroku/master 中。

4.确保您没有进行任何本地更改(我建议您现在处于 master 状态)。将 refs/heads/master 重置为 refs/remotes/git-svn。做到这一点的方法之一:

$ git update-ref refs/heads/master refs/remotes/git-svn
$ git reset --hard HEAD

5.查看 refs/remotes/heroku/master 和 refs/remotes/git-svn。 Git 存储库中是否存在 refs/remotes/git-svn 中不存在的更改?如果是,请一一挑选。还要看看你的备份分支(仅在没有 git-svn-id 的提交),如果它们不在 SVN 中,也挑选它们。

6.现在您在 master 中进行了一些 SVN 中还没有的更改。跑步

$ git svn dcommit

将它们推送到 SVN。

7.现在您的 SVN 相关分支已完全修复并具有所有更改。如果我理解正确的话,您希望 Git 存储库中有相同的内容。最好用当前的 master 内容替换 refs/remotes/heroku/master :

$ git push heroku master --force

现在您的 Git 存储库具有与 SVN 存储库相同的内容。

为了避免将来出现这些问题,请确保您never将没有 git-svn-id 的提交推送到 Git(即,当您运行“git Push”时,您的 master 仅包含带有 git-svn-id 签名的提交 - 如果没有 - 运行“git svn dcommit”将它们推送到 SVN第一的)。

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

某些提交中缺少 git-svn-id 的相关文章

  • Heroku 部署错误

    在 Windows 环境中 尝试部署到 Heroku 时出现以下错误 C Ruby lib ruby gems 1 8 gems heroku 1 9 13 lib heroku commands base rb 32 in 没有这样的文件
  • 有没有办法让 git flow 显示它在幕后执行的命令?

    有什么方法可以让 git flow 提前告诉我当我执行 flow 命令时它将执行的确切 git 命令吗 或者告诉我它是东吗 我只能看到输出和摘要吗 你可以使用Git的GIT TRACE 环境变量 http git scm com docs
  • Heroku 与 django 通道的正确 procfile/要求是什么?

    tl dr django 频道应用程序在本地使用 manage py runserver 运行 但不在 heroku 上运行 我是 django 通道的新手 尝试使用 heroku 通道部署一个非常基本的 django 应用程序 我最初使用
  • 丢失了我在 GIT 中的提交。你会不小心删除提交吗?

    我正在使用 git gui 但看不到我的分支 我知道我今天检查了一些东西 在完成提交并使用分支查看器验证后 我更改为较早的分支 我对之前的分支进行了更改 然后想返回到当前的分支 但我再也看不到它了 任何帮助都会很棒 回答你的问题 在大多数情
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • git 别名中的 AWK 语句

    我正在尝试创建一个 git 别名来以特定格式打印日志中的所有拉取请求 但是 我在使用 AWK 删除双空格时遇到问题 这是使用以下命令的 git log 的输出 git log merges grep pull request pretty
  • 默认情况下 git merge -Xignore-space-change

    我该如何设置该选项ignore space change对于所有合并使用git config 我也许可以使用别名merge 但因为我希望该设置应用于git stash pop git stash apply git pull and git
  • GIT:以下未跟踪的工作树文件将被签出覆盖

    我有两个分支 一个称为 master 另一个称为 dev 我目前位于 master 分支 我想转到 dev 分支将文件移动到开发服务器 但是当我执行 git checkout dev 我收到消息 以下未跟踪的工作树文件将被覆盖 查看 pag
  • 如何克隆特定的 Git 标签

    From git clone 1 手册页 http git scm com docs git clone branch还可以在结果存储库中的该提交处获取标签并分离 HEAD 我试过 git clone branch
  • Git 将一个分支合并到所有其他分支中

    我知道这个问题已经在这里被问过 https stackoverflow com questions 2329716 merging changes from master into all branches using git https
  • git 提交错误:检测到大文件

    您好 我正在为 ios 8 1 开发一个应用程序 xcode 我已经使用 googleMaps 框架来实现自动完成功能 当我尝试在 Git 中推送我的项目时 我收到大文件检测错误 后来尝试使用 git lfs 并跟踪 git 检测到的文件
  • 当当前分支上有未提交的更改时签出另一个分支

    大多数时候 当我尝试签出另一个现有分支时 如果我在当前分支上有一些未提交的更改 Git 会不允许我这样做 所以我必须首先提交或隐藏这些更改 然而 有时 Git 确实允许我在不提交或存储这些更改的情况下签出另一个分支 并且它会将这些更改携带到
  • 为所有子文件夹设置 git 配置值

    我知道可以设置每个存储库的配置来覆盖用户级配置 即 path to my repo gitconfig覆盖 gitconfig 是否可以设置 git 配置来覆盖给定文件夹的所有子文件夹的用户级设置 即 我有 topLevelFolder1
  • git 排除与忽略

    I use Tower http www git tower com 用于在 Mac 中使用 Git Tower 中的设置具有创建 gitignore 的 忽略 部分 但它还有另一个名为 排除 的部分 似乎可以将排除与 git ls fil
  • 使当前提交成为 Git 存储库中唯一(初始)提交?

    我目前有一个本地 Git 存储库 我将其推送到 Github 存储库 本地存储库有约 10 次提交 Github 存储库是其同步副本 我想要做的是从本地 Git 存储库中删除所有版本历史记录 以便存储库的当前内容显示为唯一提交 因此存储库中
  • UnicodeDecodeError:部署到 Heroku 时,“utf-8”编解码器无法解码位置 0 中的字节 0xff

    我尝试在heroku上部署我的简单django项目 但我不明白如何解决这个问题 这是git push heroku master remote Traceback most recent call last remote File tmp
  • Facebook 应用程序无法获取会话

    我正在 Heroku 上为 Facebook 开发一个非常基本的 PHP 应用程序 它显示非常基本的用户信息 如姓名 个人资料图片 但该应用程序在 getToken 方法中停止 我在登录我的个人资料后尝试了该应用程序 但仍然出现相同的消息
  • Git 无法识别重命名和修改的包文件

    我有一个名为的java文件package old myfile java 我已经通过 git 提交了这个文件 然后我将我的包重命名为new所以我的文件在package new myfile java 我现在想将此文件重命名 和内容更改 提交
  • Git 的企业采用率?

    最近一些同事之间进行了一场讨论 在当今的软件行业中 如何存在两个不同的世界 面向自由软件 公司的 Question Git 在企业环境中的使用情况如何 您在企业环境中使用 Git 的体验如何 无论如何 我们在工作场所使用 git 每个人都对
  • VSTS:在构建过期的情况下自动变基/合并和重新排队构建验证门

    我们最近对 PR 上的构建验证门进行了更改 这样 如果另一个提交在当前 PR 完成之前进入主分支 则构建会 立即 过期 看here https stackoverflow com questions 49418800 vsts invali

随机推荐

  • 快速轴对齐单元格遍历算法

    给定一个轴对齐的正方形 分为四个大小相等的单元格 A B C 和 D 给定一条从点 s1 到点 s2 的线段 查找该段 如果有 遍历的单元格 按遍历顺序排序 的最快方法是什么 在上面的例子中 正确的结果是 第 1 段 D 分段 2 A B
  • 实体框架 EDMX - 实体复数修复

    我们发现复数化服务对某些单词存在一些错误 例如它认为 Campus 是复数 并用 Campu 将其单数化 无论如何 我们已经弄清楚如何使用 ICustomPluralizationMapping 接口向服务添加自定义映射 问题是 我们如何告
  • JavaFX 创建弹出窗口,无需外部库

    我怎样才能创建像这样的弹出窗口DatePicker班级来自javafx scene control DatePicker如这里所示 显示时 弹出窗口应位于所有其他组件的顶部 如此处所示 弹出窗口位于TextField 找到了一个非常简单的解
  • 关于异步返回类型

    想知道为什么我们应该指定这一点async方法确实返回任务对象 指定它似乎是多余的async关键字加上它很混乱 因为你并没有真正创建Task object 据我了解 编译器确实发出了创建任务对象所需的代码 无论是在等待调用还是用新任务包装返回
  • Rails 3:如何从 js.erb 文件调用 javascript 函数

    现在我已经升级到 Rails 3 我正在尝试找出分离和重用 javascript 片段的正确方法 这是我正在处理的场景 我有一个包含两个区域的页面 一个区域包含可拖动的元素 另一个区域包含可放置的元素 当页面加载时 我使用 jQuery 来
  • 单例模式的问题

    过去几天我一直在阅读有关单例模式的内容 人们普遍认为 需要它的场景很少 如果不是罕见的话 可能是因为它有自己的一系列问题 例如 在垃圾收集环境中 这可能是内存管理方面的问题 在多线程环境中 它可能会导致瓶颈并引入同步问题 从测试的角度来看令
  • 是否可以在 Java 运行时设置环境变量?

    是否可以在 Java 运行时设置环境变量 应用 在Java 1 5 java lang System 类中有 getenv 方法 我会 只需要一个 setenv 方法 是否可以修改java进程本身的环境变量 不在子进程中 通过JNI可以实现
  • android 检查数据库中是否存在记录

    我想检查 SQLite 数据库中是否存在记录 这是我到目前为止所做的 当我搜索已经存在的记录时 我从列表中的 EditText 获取值 code from activity class public View OnClickListener
  • 构建 DOM 中任何给定节点的 querySelector 字符串值

    我正在尝试找到一种方法来构建任何给定节点的 querySelector 字符串 换句话说 选择页面上的任何节点 是否可以遍历 DOM 并构建一个字符串 允许我将生成的字符串传递给 document querySelector 并取回我选择的
  • “class boost::asio::async_result”中没有名为“completion_handler_type”的类型

    我正在尝试编写一个可以使用 boost spawn 调用的堆栈协程 协程内部启动一个线程 等待线程结束 并获取线程生成的一个整数值作为协程的返回值 但是 我遇到了一个错误 有专家可以帮我看一下吗 我的环境是 Ubuntu22 04 GCC9
  • 按日期获取维基百科修订 ID 的 API [已关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 是否有任何API可以按日期获取维基百科修订ID 而不是检查所有修订历史记录并提取该日期之前的最新修订 谢谢你 The 修订查询 API允许您传递时间
  • 将带有 html 的字符串保存为图像

    我有一个包含网页中整个 html 的字符串 我想将此字符串保存为具有所有 html 规则的图像 最后有来自网页的图像 我该如何用c 和asp net解决这个问题 您可以使用以下组件将 HTML 文件转换为 PDF http code goo
  • Cython:创建数组抛出“常量表达式中不允许”

    我尝试将一个复杂的函数从 Python 重写为 Cython 以大幅加快速度 但遇到以下问题 在使用 hh vers vector pyx 编译函数时 setup ext modules cythonize hh vers vector p
  • Pushl %esp 是在存储之前还是之后更新 ESP?

    The pushlY86 指令将堆栈指针减 4 并将寄存器值写入内存 所以并不清楚处理器执行指令时应该做什么pushl esp 因为被压入的寄存器正在被同一指令更改 可能发生两种可能的事件 1 推入原值 esp 或 2 压入递减的值 esp
  • 使用 Mat OpenCV 访问像素

    我想使用 OpenCV 2 3 访问 RGB 像素 我正在尝试这样 但就像每个像素在帧后都是相等的 因为我没有输出 图像来自我的网络摄像头 我可以看到它们 顺便说一句 红色 0 THX Mat frame Mat oldFrame Vide
  • awk中的元编程,将文件转换为html表格格式

    我有以下文件 table txt 逗号分隔 1 Example Title COL1 COL2 COL3 COL4 COL5 BRCC ACGC 15869 105A 1 BCAS GAAG 73345 369T 2 模板 awk func
  • 如何有效地让“ParentFont = False”子控件使用与父控件相同的字体名称?

    大多数 VCL 控件都有Fonts and ParentFont财产 这是一个很好的做法ParentFont True并且字体将遵循其父字体Name Height and Color 这使得控件之间具有统一的视觉效果 但是 我们可能希望通过
  • 正则表达式匹配整行

    我是脚本编写新手 一直在阅读有关如何使用正则表达式的内容 我想获取与模式匹配的完整行 我的输出是 64 bytes from 33 33 33 33 icmp seq 9 ttl 254 time 1 011 ms 33 33 33 33
  • 使用 PHP DOMDocument 时 nextSibling 不起作用

    我尝试使用以下元素获取nextSibling并且以下代码不起作用 我有一个错误如下 PHP 警告 为 php dom php 第 35 行中的 foreach 提供的参数无效 这肯定是由 foreach 循环中的 null 值引起的 但如果
  • 某些提交中缺少 git-svn-id

    我有一个旧的 SVN 存储库 我使用它签出了git svn为了解决这个问题并推送到 Heroku 我做得相当标准git push heroku master git svn rebase git svn dcommit跳舞 一切都很好 然而