我正在提交一个永远不应该合并的文件,但是当其他人拉动时,覆盖(可能带有警告)。有没有办法实现这个目标?
答案 0 :(得分:5)
有点不清楚你的实际情况。您应该问自己的第一个问题是文件是否实际需要被跟踪 - 不可合并的文件通常是派生文件,正如您在评论中所建议的那样,因此不需要(也不应该)跟踪。
如果你确实需要跟踪它,它是二进制文件吗? Git不会尝试合并二进制文件 - 它们总是显示为合并冲突。 Git很适合检测二进制文件,所以在这种情况下,你可能很安全。如果它不是二进制文件,那么你仍然强迫Git适当地处理它。在.gitattributes
文件中,添加如下内容:
path/to/file merge=binary
这将指示它将其视为二进制文件以进行合并。如果需要,您还可以定义自定义合并驱动程序。在gitattributes文件中使用merge=my_merge_driver
,然后在gitconfig中添加如下内容:
[merge "my_merge_driver"]
name = descriptive name
driver = my_script %O %A %B
脚本的三个参数是共同的祖先版本(O表示原始版本),当前分支的版本(A)和另一个分支的版本(%B) - 它们是临时文件,合并驱动程序应该是进行合并并将结果保留在%A中。有关详情,请参阅man gitattributes
。