【问题标题】:git sparse checkout - can't abort mergegit sparse checkout - 无法中止合并
【发布时间】:2020-06-25 13:00:17
【问题描述】:

使用 git 2.25.1 使用 git sparse-checkout init/set 设置 sparsecheckout。

现在我需要中止合并。

试过了:

git merge --abort 

条目“QStreams_xxx/infra/QPrism/Qpvc/gradle_pvc/gradle_pvc.iml”不是最新的。 无法更新稀疏结帐。 致命:无法将索引文件重置为修订版“HEAD”

试过了:

git reset --hard

同样的错误信息。

试图禁用稀疏结帐

git sparse-checkout disable

错误:

错误:无法禁用稀疏签出:您有未暂存的更改。 错误:另外,您的索引包含未提交的更改。

有没有办法解决这个问题?

谢谢 波阿斯

【问题讨论】:

  • 你能以某种方式重新创建一个最小的例子来重现这个吗?我尝试重新创建稀疏结帐合并冲突,然后中止它似乎工作
  • @Omer 你是对的,我试图在稀疏检出规则未涵盖的文件夹上重现简单冲突,并且 --abort 有效。将尝试调查我的案例,也许它比我以为

标签: git git-sparse-checkout


【解决方案1】:

不确定这是否是最好的流程,但至少它让我有一些出路......

git read-tree --restore HEAD
#now usual cleanup
git restore .
git clean -xdf

【讨论】:

    【解决方案2】:

    Git 2.34(2021 年第 4 季度)的合并应该更加健壮:已准备好各种合并操作以有效地处理稀疏索引。

    对于新的(和默认的)merge strategy ORT(“表面上递归的双胞胎”,这将是 Git 2.34,2021 年第四季度的默认设置)尤其如此。

    参见commit 516680bcommit 5d9c934commit c0b9930commit 6957636commit a338063commit ad90da7(2021 年 9 月 8 日)Derrick Stolee (derrickstolee)
    (由Junio C Hamano -- gitster -- 合并commit a16dd13,2021 年 9 月 20 日)

    merge:使用 ORT 实现稀疏感知

    签字人:Derrick Stolee
    审核人:Elijah Newren

    允许 'git merge'(man) 在不扩展稀疏索引的情况下进行操作,至少不能立即进行。
    在某些情况下索引仍会扩展:

    1. 如果合并策略是“递归的”,那么我们启用 在 merge_recursive() 开始时的 command_requires_full_index 方法。我们希望稀疏索引用户也有“ort”策略 已启用。

    2. 使用 'ort' 策略,如果合并导致文件冲突, 然后我们在更新工作树之前扩展索引。循环 迭代工作树替换索引条目和轨道 'original_cache_nr' 如果索引可能会变得完全错误 在操作的中间展开。这个安全阀是 在循环开始之前很重要。稍后的更改将集中于此 只有在我们确实在 稀疏结帐锥。

    3. 其他合并策略作为git merge-X subcommand执行, 并且这些策略目前受到保护 'command_requires_full_index' 守卫。

    需要一些测试更新,包括错误的 'git checkout -b'(man),它没有指定基本分支,导致合并是快进合并。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-06-28
      • 2013-03-15
      • 2020-08-20
      • 2016-04-10
      • 1970-01-01
      • 2017-10-18
      • 2021-08-27
      相关资源
      最近更新 更多