merge=ours的git属性不起作用了。

问题描述 投票:1回答:1

我在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

我把它加在了文件的末尾,然后我又试着合并了一次... 但也没有成功。

git atlassian-sourcetree gitattributes
1个回答
1
投票

看来你是想在那里定义一个自定义的合并驱动。该 文件 告诉你应该在另一个文件中这样做,然后引用它。即使在2.18.0版本中也是如此。

合并驱动的定义是在 .git/config 文件,而不是在 gitattributes 文件,所以严格来说,这个手册页面是一个错误的地方来谈论它。参考文献

如果我看一下 例子我明白了

ab* merge=filfre
abc -foo -bar
*.c frotz

在哪里?filfre 是在git配置文件中定义的。这至少可以解决你问题的第二部分,我建议你在那里试试这种不同的方法。

对于第1部分。git config --global merge.ours.driver true 已获认可 此处,虽然我觉得另一个答案更准确。确实,公认的答案是原问题作者的,并没有提供多少内幕。已知的转角情况下,也有修复不成功的情况。你有没有考虑过 另辟蹊径?

© www.soinside.com 2019 - 2024. All rights reserved.