Git rerere 文件模式?

标签 git git-rerere

是否可以配置 git rerere 使其仅记住特定文件模式并对其应用 merge 解决方案?即:就在模式 pom.xml 上。

最佳答案

这是一个棘手的问题,但我可以想到一个解决方案,该解决方案涉及在 merge 操作之后(但在任何手动解析之前)立即调用脚本。

首先,冲突解决方案的缓存 (.git/rr-cache) 按 blob 哈希而不是按文件路径存储。没有任何迹象表明决议实际上来自哪个文件,所以我认为破解该目录不是一个可行的解决方案。

This quote维护者 Junio Hamano 也强调 rerere 是按 merge 而不是按文件的事实:

There is no "I do not care if there are good resolutions remembered that do not have anything to do with the current merge, just remove all of them"---that is what "rm -fr .git/rr-cache" is for.

...这当然对您没有用,因为有选择地从 .git/rr-cache 中删除文件不太适合您的用例中的自动化。

要利用的功能可能是采用路径规范的 forget 子命令。然而,“遗忘”只能在 merge 的上下文中发生,这使得它从根本上不同于 .gitignore 之类的静态应用。

但是,可以想象您可以有一个调用脚本的 merge 后 Hook :

遍历冲突文件:

git diff --name-only --diff-filter=U

对于每一个你想要“un-rerere”的文件,忘记它吧:

git rerere forget -- path/to/file

...并恢复冲突:

git checkout -m path/to/file

然后,继续像往常一样进行 merge ,保留您想要完整记住的文件的相关分辨率。

可以将要“rerere remembered”的文件列表 checkin 存储库(可能在名为 .reremember 的文件中)并从脚本中查询。

关于Git rerere 文件模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31734359/

相关文章:

git - 配置设置的分布式版本控制

git - 如何在 git commit 上更改作者而不重新修复 merge 冲突

git - 我如何编辑一个包含数百个 merge 和 merge 冲突的 Git 提交?

git - 重新使用 Git 的冲突解决方案

git - window Git : unknown error occurred while reading the configuration files

git - 如何创建具有本地和远程 Git 存储库差异的单个提交?

git - 当解决方案是删除冲突文件时,有没有办法让 git rerere 工作?

multithreading - git gc 的线程数取决于 repo 大小

git - 将主控转发到标签