在Git中,有没有办法将文件标记为“纯粹”?

时间:2012-02-11 23:07:33

标签: git

  

可能重复:
  Locking binary files using git version control system

我正在提交一个永远不应该合并的文件,但是当其他人拉动时,覆盖(可能带有警告)。有没有办法实现这个目标?

1 个答案:

答案 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