我的 git 存储库有问题。我们有一个LFS文件,它只能由我们的一个用户在Mac上修改。mac用户拉动和推动没有发生任何事故。
但是在Windows开发人员的PC上,git(或turtoisegit)会自动将LFS文件标记为已修改,即使它没有修改。我认为这是因为没有清楚地理解从指针到文件的切换。
丑陋的效果是Windows用户尝试推送并收到"您必须拉取"消息,但随后尝试拉取并由于未真正修改的LFS文件而发生合并冲突。但是,没有决心...下拉列表中的选项,用于假定的冲突。还原会将图标设置回未修改,但任何 turtoisegit 操作仍然失败,就好像 lfs 文件已被修改并将图标状态重置为已修改一样。
由于用户无法推送、无法拉取,并且无法解决导致无法推取或拉取的合并冲突,因此用户会卡住。我用谷歌搜索并发现了一些旧帖子,建议 turtoisegit 不能完全正确处理 lfs 并导致这种情况,但有没有人比使用 git 命令进行可怕的试错更了解如何解决这个问题?
正确的解决方案是 lfs 文件不会被错误地标记为已修改。但是,我现在使用此解决方法:
- (windows)用户在tortoisegit中提交更改,确保取消选中,因此不会在提交中包含错误标记修改的lfs文件
- 用户删除(不是删除,只是普通的旧窗口文件删除)错误标记修改的 lfs 文件
- 如果查看,该文件现在在状态中显示为"丢失">
- 用户执行拉取,并且成功拉取 lfs 文件,没有合并冲突
- 用户现在可以成功推送提交
这是我们正在使用的方法,直到我们发现 lfs 文件被错误标记为已修改的修复程序。