我需要排除dist/
文件夹中的合并错误,我不在乎它是theirs
,ours
还是其他策略,但我需要将其保留在修订控件中因为这是部署到Heroku的方式。 .gitattributes
脚本似乎是要走的路。但我似乎无法做到这一点。
我读了这个canonical answer和similiar 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
中。
我做错了什么?谢谢你的帮助。
答案 0 :(得分:0)
documentation在这本书中不好用。
您还可以使用Git属性来告诉Git对项目中的特定文件使用不同的合并策略。
听起来不错!我们可以阅读有关合并策略 here的信息,其中有一种叫做 ours 会很有帮助。
不幸的是,下一行粉碎了这个梦想。强调我的。
一个非常有用的选项是告诉Git不要在发生冲突时不要合并特定文件 ,而是要使用合并的一方来代替其他人。
对我们来说很遗憾,如果dist/
中对feature
的更改与master
不冲突,那么它们将被合并到dist/
上的master
中。您上面链接的answer的第二个question对此进行了讨论。
我建议使用post merge hook将dist/
重置为原始状态。