避免 Git 对某种文件类型进行任何合并

问题描述 投票:0回答:1

我正在开发一个相当大的项目,该项目在 Git 存储库上进行版本控制,该存储库具有多个不同类型版本的文件。其中,我们使用的 QM 建模工具使用 .qm 文件,这些文件实际上是具有一定结构的 xml 文件。

.qm 的结构及其内容的含义使得不建议使用合并工具来合并任何更改。

我想做的是让 git 发出冲突,以防它发现任何 qm 文件的更改,即使它可以合并这些更改(即使可以,结果也不能保证有意义),以便我可以手动使用该工具合并它们。

如果我执行变基而不是合并,情况也是如此,那么优点。

git git-merge git-rebase
1个回答
0
投票

好的,当我找到解决方案时回答自己。

我找到了这个答案并对其进行了一些修改。我添加了一个新的合并策略,该策略基本上采用传入分支中的文件并按原样使用它,然后将文件标记为有冲突。

所以我创建了这个脚本:

#!/bin/bash
# ${1} is the base common file
# ${2} is the file as modified by the base branch, and where the results must be
# ${3} is the file as modified by the incoming branch
# ${4} is the path of the file being merged

# ${4%.qm*} is the path without extension
# ${4##*.} is the extension of the path
# makes a backup of the original file to ease edits comparison
cat "${2}" > "${4%.qm*}.bk.${4##*.}"

cat "${3}" > "${2}"
exit 1

它按原样使用传入文件作为结果,并返回 1 将其标记为冲突。

然后我在 .gitattributes 中添加了对我的 .qm 文件使用此策略的选项,以便当我合并两个分支时,我按原样采用传入版本并使用图形工具修改和集成我的更改。

我将把这个问题留作未解决,看看是否有人有另一个解决方案,使我能够同时使用变基和合并。

编辑:我更新了脚本,添加了几行来获取本地分支的版本并对其进行备份,以便可以在比较工具中使用它来更轻松地识别我的更改。

© www.soinside.com 2019 - 2024. All rights reserved.