不,在本地打开 LFS 对象之前,需要执行 Git 命令从仓库中获取指向对象实际存储位置(一般是独立于 Git 仓库之外的 S3 对象存储服务)下载到本地。对于 LFS 文件的变更,Git 只是简单计算其 Hash 值(好像是 SHA-1),将文件作为一个整体进行上传而不做 Diff 。进行 Push 时,Git 会根据 .lfsconfig 或者 .git/ 目录下的配置访问 LFS API ,像调用 S3 RESTful API 一样把更改后的整个文件上传。这也是为什么在使用 GitHub LFS 的时候,上下行都会消耗 LFS Bandwidth ,且同一个文件在更改后多次 Commit 会成倍消耗 LFS Storage 的原因。
如果你的代码使用了 LFS 对象,那么在实际启动运行前,同样需要 Git 命令把 LFS 对象内容实际下载到本地。至于文件名的处理是 Git 自身解决的,这个指针文件遵循特定格式,修改 LFS 对象这个文件名是不会变的,只有指针中的 Hash 值会发生改变。
如果你的代码使用了 LFS 对象,那么在实际启动运行前,同样需要 Git 命令把 LFS 对象内容实际下载到本地。至于文件名的处理是 Git 自身解决的,这个指针文件遵循特定格式,修改 LFS 对象这个文件名是不会变的,只有指针中的 Hash 值会发生改变。