Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何设置特定于Git文件的默认合并策略?_Git_Merge_Git Merge_Branching Strategy - Fatal编程技术网

如何设置特定于Git文件的默认合并策略?

如何设置特定于Git文件的默认合并策略?,git,merge,git-merge,branching-strategy,Git,Merge,Git Merge,Branching Strategy,这个问题不是iOS特有的,但为了清楚起见,我在这里包含了实际的用例 我运行了一个名为Foobar的iOS项目,它显然处于版本控制之下。 在iOS项目环境中的项目文件中,有一个叫做Foobar Info.plist,它是一个XML文件,用于存储有关项目的有趣信息,如版本和我创建的版本数 每次生成项目时,我都会将存储在该文件中的生成计数递增,如下所示: ... <key>BuildCount</key> <string>2203</string> &l

这个问题不是iOS特有的,但为了清楚起见,我在这里包含了实际的用例

我运行了一个名为
Foobar
的iOS项目,它显然处于版本控制之下。 在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>
...
假设我已经完成了发布,它被合并到主线
develope
分支中

问题

为了获得发行版分支中所做的最新更改,我想将功能分支重新设置为
develope

发生这种情况时,
Foobar Info.plist
将在重新基础过程中的每次提交时导致冲突。这是因为每次提交时,构建数量都会增加;我必须通过选择行手动合并指定具有最新版本的行。请注意,3路差速器的基本版本也将有所不同

<string>2000</string>  // Base
<string>2754</string>  // Local   ** always pick this one; it's the latest
<string>2203</string>  // Remote
2000//Base
2754//Local**始终选择此项;这是最新的
2203//远程
我如何告诉git,对于一个特定的文件,
Foobar Info.plist
,我希望它通过接受最新的更改来为我解决冲突


编辑:文件必须受源代码管理。我想保留
BuildCount
,因为这是我在项目中投入精力的一个很酷的指标,我想保留它!我知道这个数字只表示完成的最小构建数量,但这对我来说已经足够了。

我意识到这是一个迟来的答案,但如果我理解你的问题,你要找的是一个文件

您可以从
.gittributes
文件中为具有相对路径的特定文件或文件夹指定合并策略,如下所示:

* text=auto
path/to/your/file.plist merge=union

我发现,这可能是我问题的答案。“复制合并”不是我想要的。我有点想要一个只针对冲突的副本合并。其他更改仍应正常应用和合并。另一件事:它不是复制合并,因为最新的更改不一定是本地分支:可以想象,
develope
有来自其他功能的提交,我还发现:他们编写了自己的合并驱动程序来处理他们的案例。merge=union将两个版本合并在一起,因此最终得到的是CbundLeverVersion 100 101
* text=auto
path/to/your/file.plist merge=union