现在有合并冲突abc.cfg
。
我试图解决它,然后再做git update-index --skip-worktree abc.cfg
一次,但是......
这是一个极端情况,在合并冲突的情况下可能会阻止git skip-worktree
按预期工作。
当使用稀疏检出功能时,当被排除在检出之外的路径需要内容级别合并时,“ git cherry-pick
”和其他合并操作会丢失skip_worktree
位,这与 HEAD 版本相同,但不会在工作中实现合并结果树,这使路径显示为已删除。
这已在 Git 2.19(2018 年第三季度)中通过保留该skip_worktree
位(而不是在工作树中具体化文件)得到纠正。
请参阅Elijah Newren ( ) 的提交 2b75fb6(2018 年 7 月 27 日)。
请参阅Ben Peart ( ) 的提交 92203e6(2018 年 7 月 27 日)。(由Junio C Hamano 合并 -- --在提交 e4095da中,2018 年 8 月 15 日)newren
benpeart
gitster
合并递归:必要时保留 skip_worktree 位
合并递归获取任何被 unpack_trees 标记为未合并的文件,尝试确定它们是否可以被解析(例如使用重命名或文件级合并),然后如果可以,它将删除旧的缓存条目并写入新的.
这意味着ce_flags
这些缓存条目的任何内容在合并时都会被清除。
不幸的是,如果一个文件被标记为skip_worktree
并且它需要文件级合并,但合并结果与在 中找到的文件版本相同HEAD
,我们会跳过更新工作树(因为文件未更改)但清除该skip_worktree
位(因为的delete-cache-entry-and-write-new-one
)。
这使得 git 将文件视为在工作副本中具有本地更改,即删除,尽管它不存在但应该显示为未更改。在这种情况下通过复制标志来
避免这个问题。skip_worktree