我在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.18.0版本中也是如此。
合并驱动的定义是在
.git/config
文件,而不是在gitattributes
文件,所以严格来说,这个手册页面是一个错误的地方来谈论它。参考文献
如果我看一下 例子我明白了
ab* merge=filfre
abc -foo -bar
*.c frotz
在哪里?filfre
是在git配置文件中定义的。这至少可以解决你问题的第二部分,我建议你在那里试试这种不同的方法。
对于第1部分。git config --global merge.ours.driver true
已获认可 此处,虽然我觉得另一个答案更准确。确实,公认的答案是原问题作者的,并没有提供多少内幕。已知的转角情况下,也有修复不成功的情况。你有没有考虑过 另辟蹊径?