使用合并策略联合将远程 .gitattribute 文件与本地 .gitattribute 文件合并

Merging a remote .gitattribute file with local .gitattribute file with merging strategy union

我正在使用 git p4 rebase 和 git LFS。不幸的是,在将 P4 内容同步到本地 git 存储库后,它会从 .git 属性中删除所有现有的 LFS 跟踪文件,并将文件添加到已同步的 .git 属性。

示例:

本地和远程 .git同步前的属性文件

    File 1 filter=lfs diff=lfs merge=lfs -text
    File 2 filter=lfs diff=lfs merge=lfs -text
    File 3 filter=lfs diff=lfs merge=lfs -text

本地 .git同步后的属性文件

    File 4 filter=lfs diff=lfs merge=lfs -text
    File 5 filter=lfs diff=lfs merge=lfs -text

现在,如果我推送到远程,我将失去对 1、2、3 的跟踪。所以在推送之前,我需要将远程 .gitattributes 文件与本地 .gitattributes 文件合并以获得

    File 1 filter=lfs diff=lfs merge=lfs -text
    File 2 filter=lfs diff=lfs merge=lfs -text
    File 3 filter=lfs diff=lfs merge=lfs -text
    File 4 filter=lfs diff=lfs merge=lfs -text
    File 5 filter=lfs diff=lfs merge=lfs -text

然后我可以推送到远程。

以下作品

git show origin/master:.gitattributes > ./.gitattributes.theirs touch blankFile git merge-file --union .gitattributes blankFile .gitattributes.theirs

如果你不想覆盖 .gitattributes 你可以这样做

git merge-file -p --union .gitattributes blankFile .gitattributes.theirs > .gitattributes.new