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

alo*_*ser 9 git git-merge git-bash

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

我读了这个规范的答案和这个类似的答案,但无法找出我做错了什么.

我的.gitattributes配置:

* text=auto
dist/ merge=keepMine
Run Code Online (Sandbox Code Playgroud)

我的相关部分 .git/config:

[merge "keepMine"]
    name = always keep mine dist during merge
    driver = keepMine.sh %O %A %B
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

编辑:也尝试git config merge.keepMine.driver true在上面的一个SO答案中建议.没工作.

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

我究竟做错了什么?谢谢您的帮助.

Ada*_*dam 0

文档很好。

\n\n
\n

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

\n
\n\n

听起来很棒!我们可以在这里阅读有关合并策略的 内容,其中有一个称为我们的策略策略,它会非常有帮助。

\n\n

不幸的是,下一句话打破了这个梦想。强调我的。

\n\n
\n

一个非常有用的选项是告诉 Git在发生冲突时不要尝试合并特定文件不要尝试合并特定文件,而是使用您这边的合并而不是其他人\xe2\x80\x99s。

\n
\n\n

dist/对于我们来说不幸的是,如果对in 的更改feature不与那么它们发生冲突master,那么它们将被合并到dist/on中master问题的第二个答案讨论了这一点。

\n\n

我建议使用一个可以重置的合并后钩子dist/到一些原始状态。

\n