【问题标题】:Git merge fails on Segmentation faultGit 合并因分段错误而失败
【发布时间】:2023-03-10 11:01:01
【问题描述】:

我有大合并涉及许多 inexact rename,但它失败并出现以下情况:

Performing inexact rename detection: 100% (169817200/169817200), done.
Performing inexact rename detection: 100% (2106881938/2106881938), done.
Performing inexact rename detection: 100% (120035958/120035958), done.
Segmentation fault

我尝试重新启动我的VDI,但没有帮助。知道如何解决吗?

【问题讨论】:

  • VDI?你在 Windows 上工作吗?在本地 fisk 或网络驱动器上?使用哪个版本的 Git?
  • Windows VDI,在网络驱动器上。 git 版本 2.28.0.windows.1
  • git 2.33.0.2 会持续吗?
  • 我试过了,同样的错误...
  • 使用 git 2.33 会在 VDI 的本地驱动器上持续存在吗?

标签: git-merge


【解决方案1】:

来自the discussion,这只发生在涉及重命名文件夹和许多文件的复杂合并期间。

这是新的merge strategy ORT(“表面上递归的双胞胎”)的工作。
该合并策略将成为 2.34 中的默认策略,但与此同时,git 2.33.0.2:

git merge -s ort

这里值得注意的主要区别是工作树和索引的更新不是与合并算法同时完成的,而是一个单独的后处理步骤。
新的 API 被设计成可以重复合并(例如,在 rebase 或cherry-pick 期间)并且只在最后更新索引和工作树一次,而不是用每个中间结果更新它。

此外,可以在两个分支之间执行合并,这两个分支都不匹配索引或工作树,而不会破坏索引或工作树。

“ort”后端在内存中进行完整的合并,并且仅在后处理步骤中更新索引和工作副本。

它确实比以前更有效地处理文件冲突和文件/文件夹重命名(使用默认的“递归”策略)。

【讨论】:

  • Tnx 很多,很清楚。那么我如何决定何时使用此命令或只是简单的“git merge”命令?
  • @arielma 从 2.34(下一个版本,2021 年第 4 季度)开始,您无需做出决定。 ORT 策略将是默认策略。一个简单的git merge 就可以工作,即使是在你的情况下。
  • 顺便说一句,虽然问题已经结束,但我认为它也可以解决它,对吧? stackoverflow.com/questions/69150777/…
  • @arielma 在邮件列表中告诉我您的问题的 URL (public-inbox.org/git):我会关注该主题。
  • @arielma OTT 不,但 ORT,最肯定的是:stackoverflow.com/a/66447468/6309
猜你喜欢
  • 2016-06-13
  • 2018-08-14
  • 2018-09-01
  • 1970-01-01
  • 2013-02-15
  • 1970-01-01
  • 1970-01-01
  • 2017-09-10
  • 1970-01-01
相关资源
最近更新 更多