如何合并Git LFS跟踪的文件内容

7
我在Git中有一个XML模型(100MB),经常变化且不断增大。我考虑使用Git LFS来处理它。
通过查看文档,我不确定Git LFS是否支持文件的实际合并,或者在冲突出现时应该遵循“我们”的或“他们”的方法。
Git LFS是否支持跟踪文件的“真实”内容的实际合并?
---- 更新1 ----
我在计算机上安装了Git LFS,以跟踪.xml文件。因此,我的XML模型的内容不再是XML内容,而是指向Git LFS服务器的指针。以下是我的XML文件现在的样子。
 version https://git-lfs.github.com/spec/v1
 oid sha256:0e23dcebda1977c424e5d0f25fda57d6eff9c2a5bbb6df7dd4985b64cf437d20
 size 53

因此,如果我在两个分支中更改此XML文件并尝试合并,则会引发冲突。当我打开XML文件以解决冲突时,我需要选择一个oid或另一个。
<<<<<<< HEAD
oid sha256:0e23dcebda1977c424e5d0f25fda57d6eff9c2a5bbb6df7dd4985b64cf437d20
size 53
=======
oid sha256:cbe18ff9b73fad7d5b9cdcd177f9be9cf25bc88db279f3136aed5bfdec7eb0f7
size 91554569
>>>>>>> refs/heads/LFSbr1

---- 更新2---

执行"git lfs env"命令后,我得到以下结果:

WARNING: Reading LFS config from ".gitconfig", not ".lfsconfig". Rename to    ".lfsconfig" before Git LFS v2.0 to remove this warning.
git-lfs/1.3.1 (GitHub; darwin amd64; go 1.6.3; git 9c9dffb)
git version 2.9.0

LocalWorkingDir=
LocalGitDir=
LocalGitStorageDir=
LocalMediaDir=lfs/objects
LocalReferenceDir=
TempDir=lfs/tmp
ConcurrentTransfers=3
TusTransfers=false
BasicTransfersOnly=false
BatchTransfer=true
SkipDownloadErrors=false
FetchRecentAlways=false
FetchRecentRefsDays=7
FetchRecentCommitsDays=0
FetchRecentRefsIncludeRemotes=true
PruneOffsetDays=3
PruneVerifyRemoteAlways=false
PruneRemoteName=origin
AccessDownload=none
AccessUpload=none
DownloadTransfers=basic
UploadTransfers=basic
git config filter.lfs.smudge = "git-lfs smudge -- %f"
git config filter.lfs.clean = "git-lfs clean -- %f"

有什么不对的吗?


我遇到了相同的问题,有解决方案吗? - gekson
2个回答

3
是的,确实如此。与非LFS内容相关的合并操作没有任何区别。Git将管理合并,而不是Git LFS。
我认为在您的“git lfs env”中缺少以下行:
git config filter.lfs.process = "git-lfs filter-process"

请确保您的 $HOME/.gitconfig 文件中包含以下内容:
[filter "lfs"]
    clean = git-lfs clean -- %f
    smudge = git-lfs smudge -- %f
    process = git-lfs filter-process
    required = true

是的,但由于此XML文件的内容现在是(git-lfs)指针,因此我合并得到的不是模型,而是指针。我不知道我是否解释清楚了...请检查更新。 - letimome
你在本地机器上安装了 git-lfs 吗?如果已经安装,你必须看到实际的 XML 文件(而非指针文件)。我在我的机器上运行了一个测试,“git merge”按预期工作,冲突解决得很好。 - Marcelo Ávila de Oliveira
是的,我已经安装了它...还有其他猜测为什么我无法合并我的模型内容吗? - letimome
请检查您的环境是否执行了“git lfs env”。 - Marcelo Ávila de Oliveira
嗯...有趣...我更新了答案,并加入了一些环境信息。 - Marcelo Ávila de Oliveira

-1
据我所知,Git LFS 适用于二进制内容(图片、PDF)或大型生成的文件(zip、编译文件)。 如果 XML 文件是由某个过程生成的,运行该过程应该会使用最新的数据重新构建文件。否则,如果这些文件是由多个用户创建和修改的,我认为您需要将它们作为代码进行跟踪,以便能够解决合并冲突。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接