“-X 他们的”选项似乎不适用于某些 Git 冲突

2023-12-27

这是一件烦人的事情。

我使用这个命令来合并两个分支

git checkout -b temp public/master
git merge -Xtheirs --squash -m "squashed with devtemp" devtemp

我遇到一些冲突:

CONFLICT (rename/delete): public/github.css deleted in devtemp and renamed in HEAD. Version HEAD of public/github.css left in tree.
Removing public/extra-html/exit-codes.html
Removing public/.gitkeep
Auto-merging package.json
Squash commit -- not updating HEAD
Automatic merge failed; fix conflicts and then commit the result.

怎么能忽视这种冲突呢?我认为 --theirs/--ours (或者这些命令的正确 Git API 是什么)可以解决此类问题吗?有没有更好、更实际的方法?


The -X theirs策略参数仅指导合并对一个文件内的各个冲突的冲突解决,而不是针对高级全文件冲突。

在这种情况下,正如消息所说,冲突在于“他们”(devtemp) 删除public/github.css完全,而“你”(HEAD)重命名它。您的 Git 不确定在这里要做什么,并已将文件保留在新名称下。

如果您想做他们所做的事情,只需git rm文件以其新名称命名,以便将其删除。但是......请注意,重命名是detected通过内容相似性,因此他们可能根本没有实际删除该文件,而是删除了另一个文件,其内容(在删除之前)与您创建的新文件非常相似。在这种情况下,删除该文件可能是错误的。

在所有情况下,每当进行合并时,明智的做法是在提交之前测试结果。使用时尤其如此-X与任一ours or theirs。 Git 不知道它在组合什么,仅仅依赖于文本相似性,并且可以进行无意义的合并,尤其是当盲目偏向某一方时在发生冲突的情况下但使用both双方的改变,只要这些改变不冲突(这就是-X选项做)。

自从你跑步以来git merge --squash,由于某种原因抑制了最终的git commit无论如何(a lagit merge --no-commit),你已经预料到必须运行git commit分别地。只需解决冲突(并像往常一样彻底测试)并提交即可。

Edit(根据评论):如果您想以编程方式执行此操作(尽管我建议不要这样做),您可以使用git ls-files --stage(也许与-z以获得更好的机器可读输出)。任何非零阶段条目都意味着合并失败。索引的内容会告诉你发生了什么:

  • 基本版本存在,我们的存在,他们的不存在:重命名/删除冲突,其中 Git 保留了“我们的”重命名版本。删除我们的(git rm -- <path>) 采取“他们的”删除。
  • 基本版本存在,他们的存在,我们的不存在:重命名/删除冲突,其中我们删除了文件但他们重命名了它。工作树可能(我没有测试过)在其名称下有该文件。添加它(git add -- <path>)来重新命名。 (您将需要设置一个测试用例并验证这是正确的路径。)
  • 基本版本不存在,他们的存在,我们的存在:创建/创建冲突。毫无疑问,Git 将我们的文件版本保留在树中。使用git checkout --theirs -- <path>将其版本提取到工作树,然后git add -- <path>切换到他们的版本。

我认为这应该涵盖所有未解决的案件。或者,如果您遇到从未有任何实际重命名的情况,您会从 Git 的重命名检测代码中得到错误的命中,并且您会想要-X no-renames禁用它。

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

“-X 他们的”选项似乎不适用于某些 Git 冲突 的相关文章

  • 如何下载 GitHub 版本的二进制文件?

    我有一个包含我需要的二进制文件的存储库 I can git checkout tags thetagoftherelease 这似乎检查了正确的标签 但没有拉下二进制文件 如何获取添加到版本中的二进制文件 版本上的绿色框 在版本中添加了二进
  • 当 git 说它正在“解决增量”时,它在做什么?

    在存储库的第一次克隆期间 git 首先接收对象 然后花费大约相同的时间 解析增量 在克隆的这个阶段实际上发生了什么 的阶段git clone are 接收存储库数据库中所有对象的 pack 文件 为收到的包创建索引文件 查看头部修订版 显然
  • Git 提交到公共子模块(主分支)

    我有两个或更多项目 我们称它们为Foo项目 and 项目栏 有一些通用代码我放入了一个子模块 我的理解是 如果我从内部提交对子模块的更改Foo项目它将在一个超然的头脑中 只有所有Foo项目克隆人可以看到 master cd ProjectF
  • Git 将合并恢复到特定父级

    我有一个 git 存储库 但在恢复合并时遇到问题 当前哈希为 0ce2ca0b35f59af267241cf4d40d16a3e13ba6f3 它有两个父母 df1acf5f54426d30f12c6b4558c3dd922297aae3
  • Git 克隆已经是克隆的存储库

    做这个手术有什么副作用吗 git clone已经是另一个远程存储库的克隆的存储库 没有副作用 但您应该准确了解克隆存储库时会发生什么 一些理论 问题 是 当您 以正常方式 克隆存储库时 即在调用时没有调整任何时髦的旋钮git clone y
  • 如何提交 git 标签?

    我已成功对中央 git 存储库进行 提交和推送更改 我现在意识到我想标记所有文件的当前版本 所以我这样做 git tag a 0 5 这样就成功了 但现在我尝试git push我被告知没有什么可承诺的 如何将新标签推送到中央存储库 注意gi
  • Git 子树导出和重新导入问题

    我有一个更大的 git 存储库 A 它与我的另一个项目 B 共享一定量的代码 为了使维护更容易 我决定使用公共代码 C 创建第三个存储库 然后通过git subtree 我准备了 A 中的所有内容 将通用代码放在文件夹 sub 中 并使用了
  • 如何让 Git diff 忽略版本号更改?

    有没有办法从 Git diff 中消除版本号变化噪音像这个 https github com keith Xcode app strings commit 9502c601cad31ef452c4cd6e8ece3982345fba1d 具
  • git pull:无法快进,

    你能帮我解决我的问题吗 当我尝试从 dev 分支拉取时发生错误 我浏览了解决方案 它说我需要 rebase 但它对我来说没有成功 CT aohc MP1GYWQA MINGW64 c TCO source RAPMD Web Fronten
  • Git 将新的本地分支推送到远程,无需指定名称

    当针对特定的跟踪问题进行补丁修复时 我们的工作流程如下所示 1 git checkout patch git pull upstream patch make sure we re up to date 2 git checkout b i
  • 如何恢复已删除的文件[重复]

    这个问题在这里已经有答案了 可能的重复 在 Git 存储库中恢复已删除的文件 https stackoverflow com questions 953481 restore a deleted file in a git repo 如何恢
  • Git 从不同的存储库中提取分支

    我当前的存储库中只有几个文件 我想合并来自不同存储库的远程分支 从中拉出并合并一个分支github com username code git 分支装载机 然后从中拉出并合并一个分支github com username code git
  • 将环境变量从 fastlane 传递到 Xcode 构建阶段脚本

    是否可以 如果可以 如何 将环境变量从运行 fastlane 的脚本传递到 Xcode 运行脚本阶段 我的最终目标是在运行脚本阶段读取当前的 git 分支名称 我们的 CI 由 Team Foundation Server 运行 它执行以下
  • Git 粒度——解决一行内的差异

    git 基于行的粒度或 diff 粒度是否可以增加到单词 字母分辨率 每行多条语句或使用 git 编写纯文本是值得的 根据评论重新阅读问题时 我想我明白了您最初的意思 所以我将给出一个真正的答案 与伊斯梅尔 巴达维的一行评论 https s
  • 如何在git中定义ESC字符?

    我想在 git 输出中使用着色 例如 git log decorate color 当我发出这个命令时 我得到的输出看起来像ESC 1 32m where ESC是反色的 在我看来 这是一个有效的转义序列 除了 033必须发送而不是字符E
  • 使用可通过 FTP 访问的 Web 服务器进行 Git 托管?

    我运行一个 糟糕的 网站 托管在第三方网络服务器上 我可以通过 FTP 访问我的 Web 服务器 据推测 Git 本身具有通过 FTP 推送 拉取的能力 由于我的 Web 服务器已经可以随处访问 我希望将其用作集中式 Git 存储库 我可以
  • 从子文件夹自动部署 Heroku

    我知道你可以从github自动部署到heroku 但我还没有找到一种方法只将子文件夹从github推送到heroku 从命令行我知道可以通过以下方式执行此操作 git subtree push prefix
  • AngularJs:显示来自 git 或 Bower 的版本号

    我创建了一个 Angular 应用程序 我想在屏幕上显示应用程序的当前版本号 目前我已将其实现为常量 application constant constants VERSION 1 1 2 但这需要我在每个新版本上更新常量 我使用 Bow
  • 获得干净的 git 沙箱的最有效方法是什么?

    对于我的持续集成构建 我想确保我的 git 沙箱中没有存放任何杂散文件 并且没有任何文件被无意中更改 我知道关于git reset hard HEAD 这解决了部分问题 但我想我想做的是删除所有未跟踪和忽略的文件 我可以用蛮力的方式做到这一
  • 运行 npm install - 如何配置不使用 SSH(端口被防火墙阻止)

    当我跑步时npm install大多数模块配置正确 然而 至少有人想击中ssh 拉取模块的地址 不幸的是 我的公司有一项政策 不允许内部网络之外的 SSH 连接 我收到的具体错误是 Error while executing npm ERR

随机推荐

  • HTTPS 握手何时发生?

    我从各种来源了解到 HTTPS 握手是使用 HTTPS 最重要的部分 我在服务器之间内部使用 POST 来传递信息 并希望使用 HTTPS 我想知道实际的 HTTPS 握手持续 保持开放 多久 是否为我发送到服务器的每个 POST 重新完成
  • JTable 单元格中的小部件

    小部件位于JTable列应该与普通列没有区别 对吧 似乎存在行为差异 采取Swing 文档示例 http docs oracle com javase tutorial uiswing components table html data并
  • 如何解决类型的发散隐式扩展

    我想上我的案例课Event K V 按键订购K总是 但我需要能够比较不同值的事件V 如何解决这种发散的隐式扩展 import scala math Ordering object Event case class Event K V key
  • 无法使用 Dancer::Plugin::Database 连接到多个数据库

    我正在使用 Dancer Plugin Database 从我的 dancer 应用程序连接数据库 对于单连接来说它工作得很好 当我尝试多个连接时出现错误 如何添加多个连接 我在 config yml 文件中添加了以下代码 plugins
  • React Native TextInput setState() 问题

    我在 TextInput 的 onChangeText 中遇到了 React Native 的 this setState 问题 我试图在它下面的文本标签中显示 TextInput 的内容 然而 它什么也不显示 setState 调用永远不
  • ajax中如何检查数据是否传递

    我有以下要求来获取注册表以发布数据 但我无法测试它 有人可以帮忙吗 我想看看数据有没有通过 我有 jquery cdn 和 jquery validate 我有plunker http plnkr co edit XmsAh20ZjGwtS
  • 启用静态库中使用的 ifdef 宏

    可以使用静态库中定义的宏吗 我有自己的调试宏 名为TWDEBUG我在为共享而创建的静态库中使用它 如果我将静态库导入到新项目中并使用它 编译器似乎无法识别它 我确实设置了预处理器宏TWDEBUG and Other C flags and
  • 向 VTL 中的对象添加键/值对(适用于 API 网关)

    我正在为 AWS API Gateway 集成响应编写映射模板 我想将键 值对添加到返回 Lambda 函数的 JSON 对象 我的函数返回一些 JSON 如下所示 id 1234 name Foo Barstein 我希望模板输出如下内容
  • 当 AKMicrophone 存在时来自 AKMIDISampler 的连续正弦波

    当存在初始化的 AKMicrophone 时 我在项目中使用 AKMIDISampler 时遇到问题 在采样器上调用 播放 时 除了正确播放木版样本外 第一次 播放 被称为恒定正弦波开始播放 它永远不会停止 我用下面最少的代码复制了这个问题
  • 将 ruby​​ 脚本文件传递到 Rails 控制台

    有没有办法传递 ruby 文件 foo rb到 Rails 控制台 预期结果是控制台启动 Rails 环境后运行文件 或者任何其他方式允许我在 Rails 环境中执行文件 从命令提示符触发 实际上 最简单的方法是运行它load在 的里面ra
  • 从表中获取最后一条记录 ID 的最安全方法

    在 SQL Server 2008 及更高版本中 最好 最安全 最正确的方法是什么 从数据库表中检索ID 基于自动增量主键 检索其他列最后一行的值 例如 SELECT TOP 1 FROM Table ORDER BY DESC SELEC
  • 带镶嵌边框的 CSS 圆圈

    我正在尝试在 CSS 中创建一个带有镶嵌边框的圆圈 如下例所示 我有以下 HTML 和 CSS 但它没有产生我需要的效果 inlay circle width 15rem height 15rem border solid a7a9ac 2
  • 图数据结构的C实现

    我已经学习了图数据结构的基础知识 现在我想实现所有可以在图上执行的结构 算法 操作 请分享一些有用的链接 我可以在其中开始用 C 语言实现图形 邻接表 http en wikipedia org wiki Adjacency list an
  • 滚动查看器的子元素阻止用鼠标滚轮滚动?

    我在使鼠标滚轮滚动在以下 XAML 中工作时遇到问题 为了清楚起见 我对其进行了简化
  • 使用正则表达式选择 numpy 数组中的元素

    可以如下选择 numpy 数组中的元素 a np random rand 100 sel a gt 0 5 select elements that are greater than 0 5 a sel 0 do something wit
  • Python Range() 与 Numpy.arange() 函数有什么区别?

    我在网络搜索中了解到 numpy arange 比 python range 函数占用的空间更少 但我尝试过 使用下面它给了我不同的结果 import sys x range 1 10000 print sys getsizeof x gt
  • 在 Swift 中重写超类委托

    我正在开发一个 Swift v1 2 项目 其中包含两个 UIView MyView and 我的视图子类 MyView有一个我想要覆盖的委托我的视图子类成为一个子协议 类似于UITableViews have a UITableViewD
  • 正则表达式检测 IE9 及以下版本?

    我正在尝试用 Java 编写一个正则表达式模式来检测用户代理是否小于或等于 Internet Explorer 9 这里有很多示例 http www useragentstring com pages Internet 20Explorer
  • Python:根据不同的字母顺序排序

    假设我有一个不同顺序的字母表 H V R L D A 现在我想将字符串排序为 HV 根据这个命令 我期待的东西应该是这样的 alphabet HVRLDA sorted RL HH AH key lambda word alphabet i
  • “-X 他们的”选项似乎不适用于某些 Git 冲突

    这是一件烦人的事情 我使用这个命令来合并两个分支 git checkout b temp public master git merge Xtheirs squash m squashed with devtemp devtemp 我遇到一