2

我的项目中有一个xml文件:mainWindow.ui。它是 GUI 的 Qt Designer 文件。对于每一个图标和其他资源,都有这样一行:

<iconset resource="../build/resources.qrc">

问题是 resources.qrc 是一个配置文件,其位置取决于特定用户的构建目录(每个人的偏好可能会有所不同,例如

<iconset resource="../../build/resources.qrc">

这导致了编辑 mainWindow.ui 的开发人员之间的激烈争斗,因为他们每次更改大约 50 行,这意味着每次发生合并请求时都要对这个文件进行冗长而乏味的手动合并。

如果不将 mainWindow.ui 也设置为配置文件,我可以告诉 git 不允许更改这些行,还是可以告诉 Qt Designer 修复该位置?我怎样才能避免这种情况?

4

1 回答 1

1

您可以设置一个.gitattributes文件,该文件可以指定使用our设置解决所有合并冲突:

 mainWindow.ui merge=ours

这将阻止 mainWindow.ui被合并覆盖。而不是冲突,这将通过接受文件的当前状态静默解决合并。如果开发人员有自己的带有设置的分支,这可能会很好。如果他们直接在 master 上工作,那就不太好,因为他们会推送自己的设置。

或者,在您的情况下可能更好,每个开发人员都可以强制 git 忽略对以下内容的更改mainWindow.ui

git update-index --skip-worktree mainWindow.ui

这很令人困惑,但它使 Git 在推送时忽略文件中的更改,但 Git 在拉取时仍然尝试保留本地文件中的更改,只有在远程更新时才更新它。可以在此处找到概述。

于 2013-06-16T16:59:39.740 回答