我在Windows上使用的是Sourcetree 3.0.12,我使用的命令行git版本是git version 2.18.0.windows.1
(至少当我从Sourcetree打开终端并得到Cygwin命令行时,它是这么说的)。
我希望我的树中app/Resources/
上的所有文件都受到“保护”,不受其他分支的更改;换句话说,我希望git总是把我的版本合并到那个文件夹中,所以我做了以下操作:
1)在命令行中,在树的根目录下,我键入了git config --global merge.ours.driver true
。
2)在我的树的根处,我创建了一个.gitattributes
文件,该文件表示:
app/Resources/ merge=ours
然后我尝试合并另一个分支中的更改......结果在app/Resources
中的文件中出现了很多冲突。
我读到一个不经意的评论,说这个特性只适用于更新版本的git。是这样吗,还是我做错了什么?
EDIT:按照下面的第一个答案,我手工编辑了我的.git/config
文件,添加了以下内容:
[merge "ours"]
name = ours
driver = true
我把它添加到文件的末尾,然后我又试着合并......但也不起作用。
2条答案
按热度按时间8ehkhllq1#
看起来你试图在那里定义一个自定义的合并驱动程序。docs告诉你应该在另一个文件中这样做,然后引用它。即使在2.18.0版本中也是如此。
合并驱动程序的定义是在
.git/config
文件中完成的,而不是在gitattributes
文件中,因此严格地说,本手册页不适合讨论它。如果我看一下这些例子,我会发现:
filfre
是在git配置文件中定义的,这至少可以解决你问题的第二部分,我建议你尝试不同的方法。在第1部分中,
git config --global merge.ours.driver true
被作为可接受的答案here给出,尽管我觉得另一个答案要准确得多。实际上,可接受的答案是由原问题作者给出的,里面没有提供太多信息。在修复不起作用的情况下,也可以使用已知的极端情况。您考虑过alternative approach吗?eivnm1vs2#
你应该加上
在你的
.gitattributes
里。