`git lfs` 使用哪个 git-lfs?

Which git-lfs does `git lfs` use?

我刚刚将安装的 Git LFS 从 https://github.com/git-lfs/git-lfs/releases 更新到最新版本 (2.3.0)。但是,当我 运行 git lfs version 我看到:

$ git lfs version
git-lfs/2.2.1 (GitHub; windows amd64; go 1.8.3; git 621d1f82)

如果我运行git-lfs version我看到新版本:

$ git-lfs version
git-lfs/2.3.0 (GitHub; windows amd64; go 1.8.3; git 4dd2bf73)

我不确定我是否理解 git lfs 命令在哪里找到它的 git-lfs。我找到了一对(或至少一个)旧的 git-lfs 安装并删除了它们,尽管 git 似乎仍然能找到一个旧的。路径中没有其他 git-lfs。

我需要做什么才能告诉 git 使用新安装的版本?

我 运行宁 Windows 10 并且使用 Cygwin。我在 PowerShell 和 cmd 中得到了相同的结果。

编辑: 我发现了这个:

C:\Program Files\Git\mingw64\bin\git-lfs.exe

这似乎是旧版本:

$ /cygdrive/c/Program\ Files/Git/mingw64/bin/git-lfs.exe version
git-lfs/2.2.1 (GitHub; windows amd64; go 1.8.3; git 621d1f82)

我应该删除这个(另一个应该通过 PATH 找到,还是用新的替换它?或者有更多 "official" 的方法吗?

通常,当您 运行 任何 Git 不知道的任意命令(甚至 Git 知道的命令时 知道是内置的,真的)比如:

git asdf

Git 将在您的 $PATH 中搜索名为 git-asdf 的程序。不过,在执行此搜索之前,Git 会插入其内置的 git-core 目录:

$ git --exec-path
/usr/lib/git-core

(在 Ubuntu 虚拟机上;在我的 Mac 上,它目前是 /usr/local/Cellar/git/2.15.1_1/libexec/git-core,因为这是我在那里安装的最后一个更新。

除其他外,这意味着您可以编写自己的 Git 命令并将它们放在 $PATH 中的某个位置。但在这种情况下,这意味着 git lfs ... 可能会找到 $(git --exec-path)/git-lfs,或者如果你 运行:

你的 shell 说的任何东西
$ which git-lfs

当然,假设您有支持此功能的shell。

根据您的编辑,我认为 git --exec-path 会产生 C:\Program Files\Git\mingw64\bin

Should I just delete this (and the other should be found via the PATH, or replace it with the new one? Or is there a more "official" way of doing this?

删除它可能会起作用。我预见到简单地删除 git-core 目录中的一个的两个主要危险:

  • 有时 Git and/or 各种像插件一样工作的东西以不同的速度发展。如果已知 git-lfs 的配对版本可与特定 Git 安装一起使用,则其他一些 git-lfs 可能无法工作,因为它可能不同步。 (所以你可以将它保存在第三个位置,不碍事,而不仅仅是删除它。)

  • 有些东西可能会自动重新安装旧的,或者卸载新的。前者很烦人,而后者会导致失败(所以把旧的保存起来可能很方便)。