Git:避免频繁更改的行

时间:2013-06-16 16:40:39

标签: git qt merge conflict qt-designer

我的项目中有一个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修复该位置?我该如何避免这种情况?

1 个答案:

答案 0 :(得分:1)

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

 mainWindow.ui merge=ours

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

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

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

这非常令人困惑,但它使得Git在推送时忽略了文件中的更改,但是Git在拉动时仍然试图保留本地文件中的更改,只有在更新遥控器时才更新它。可以找到概述here