2

我刚刚将我安装的 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,还是用新的替换它?还是有更“官方”的方式来做到这一点?

4

1 回答 1

4

通常,当您运行 Git 不知道为内置(甚至是 Git确实知道为内置)的任意命令时,例如:

git asdf

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

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

(在 Ubuntu VM 上;在我的 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

当然,假设您有一个支持此功能的外壳。

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

我应该删除这个(另一个应该通过PATH找到,还是用新的替换它?还是有更“官方”的方式来做到这一点?

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

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

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

于 2018-02-13T17:49:36.870 回答