Git:在gitattribute中为整个文件夹指定一个git merge策略“ours”(或者只是禁用特定文件夹上的合并错误?)

时间:2014-01-23 13:15:18

标签: git git-merge git-bash

我需要排除dist/文件夹中的合并错误,我不在乎它是theirsours还是其他策略,但我需要将其保留在修订控件中因为这是部署到Heroku的方式。 .gitattributes脚本似乎是要走的路。但我似乎无法做到这一点。

我读了这个canonical answersimiliar answer,但无法找出我做错了什么。

我的.gitattributes配置:

* text=auto
dist/ merge=keepMine

.git/config的相关部分:

[merge "keepMine"]
    name = always keep mine dist during merge
    driver = keepMine.sh %O %A %B

keepMine.sh(在我的项目根文件夹中,没有文件夹不在路径中,但复制到路径中的文件夹没有帮助,并且不是一个好的解决方案,因为脚本应该是修订控制的一部分,所以所有开发人员都会得到它):

# copied as is from the SO answer
# I want to keep MY version when there is a conflict
# Nothing to do: %A (the second parameter) already contains my version
# Just indicate the merge has been successfully "resolved" with the exit status
exit 0

编辑:按照上述SO答案中的建议,尝试了git config merge.keepMine.driver true。没用。

但我仍然遇到合并错误(如果我创建它们),例如在dist/styles/sdkasl.main.css中。

我做错了什么?谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

documentation在这本书中不好用。

  

您还可以使用Git属性来告诉Git对项目中的特定文件使用不同的合并策略。

听起来不错!我们可以阅读有关合并策略 here的信息,其中有一种叫做 ours 会很有帮助。

不幸的是,下一行粉碎了这个梦想。强调我的。

  

一个非常有用的选项是告诉Git不要在发生冲突时不要合并特定文件 ,而是要使用合并的一方来代替其他人。

对我们来说很遗憾,如果dist/中对feature的更改与master不冲突,那么它们将被合并到dist/上的master中。您上面链接的answer的第二个question对此进行了讨论。

我建议使用post merge hookdist/重置为原始状态。