这个问题不是特定于 iOS 的,但为了清楚起见,我在此处包含了实际用例
我运行了一个名为 的 iOS 项目Foobar
,显然处于版本控制之下。在 iOS 项目环境中的项目文件中,有一个名为Foobar-Info.plist
的 XML 文件,它存储有关项目的有趣信息,例如版本和我所做的构建数量。
每次构建项目时,我都会增加存储在此文件中的构建计数,如下所示:
...
<key>BuildCount</key>
<string>2203</string>
<key>CFBundleShortVersionString</key>
<string>0.0.4</string>
<key>CFBundleVersion</key>
<string>0.0.4-release/0.0.4.2203</string>
...
其中 '0.0.4-release' 是 git-flow 分支名称,2203 是内部版本号。这是在CFBundleVersion
现场使用的,因此对我来说构建的来源非常明显。
想象一下,在另一个分支中,自发布以来我已经取得了很大的进步,并且相同的字段看起来像:
...
<key>BuildCount</key>
<string>2754</string>
<key>CFBundleShortVersionString</key>
<string>0.0.4</string>
<key>CFBundleVersion</key>
<string>0.0.4-feature/add-quux-and-baz.2754</string>
...
假设我完成了发布,它被合并到主线develop
分支中。
问题
为了获得发布分支中所做的最新更改,我想将功能分支重新设置为develop
.
发生这种情况时,Foobar-Info.plist
将在变基过程中的每次提交时导致冲突。这是因为每次提交都会增加内部版本号;我必须通过选择行来手动合并,手动指定最新版本的行。请注意,三向差异的基本版本也将有所不同。
<string>2000</string> // Base
<string>2754</string> // Local ** always pick this one; it's the latest
<string>2203</string> // Remote
我如何告诉 git 对于一个特定的文件,Foobar-Info.plist
我希望它通过进行最新的更改来为我解决冲突?
编辑:该文件必须保存在源代码控制之下。我想保留它,BuildCount
因为它是我的项目投入努力的一个很酷的迹象,我想保留它!我知道这个数字只表示完成的最小构建数量,但这对我来说已经足够了。