3

可以配置 gitrerere使其仅记住并在某些文件模式上应用合并分辨率吗?即:就在模式上pom.xml

4

1 回答 1

0

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

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

维护者 Junio Hamano 的这句话也提到了 rerere 是 per-merge 而不是 per-file 的事实:

没有“我不在乎是否记住了与当前合并没有任何关系的好解决方案,只需删除所有解决方案”---这就是“rm -fr .git/rr-cache”为了。

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

要利用的功能可能是forget采用路径规范的子命令。然而,“忘记”只能在合并的上下文中发生,这使得它与 .gitignore您可以静态应用的东西根本不同。

但是,可以想象你可以有一个调用脚本的合并后钩子

迭代冲突的文件:

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

对于您想要“取消”的每个文件,忘记它:

git rerere forget -- path/to/file

...并恢复冲突:

git checkout -m path/to/file

然后,继续按常规进行合并,保留您想要记住的文件的 rerere 分辨率。

可以将要“重新记住”的文件列表检入存储库(可能在一个名为 的文件中.reremember)并从脚本中查询。

于 2015-12-24T02:52:04.847 回答