【问题标题】:How to update my version of git on OSX 10.8如何在 OSX 10.8 上更新我的 git 版本
【发布时间】:2024-04-30 02:40:02
【问题描述】:

我在 OSX 10.8.2 上运行 git git v1.7.4.4

我刚刚在远程服务器上安装了 git,它的版本是 1.11.x。我想运行相同版本的软件,但我不知道如何在我的笔记本电脑上更新 git。

我尝试按照here 列出的步骤,指示下载git-OSX-installer,运行安装(运行顺利),然后执行:

$ sudo mkdir -p /usr/local/bin
$ sudo ln -s /usr/local/git/bin/git /usr/local/bin/git

但在此之后我执行git --version,它仍然是 1.7.4.4。我只是重新安装了相同的版本吗?还是我在其他地方安装了新版本?

我一直在阅读类似的问题,我认为问题在于 OSX 附带的旧版本 git 安装在不同的位置,然后 git-osx-installer 或 mac 端口将放置它。但我不知道如何纠正这个问题。提前感谢您的建议。

更新:

which git 返回: /usr/bin/git

echo $PATH 返回: /opt/local/bin:/opt/local/sbin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@全局/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr /local/bin:/usr/local/git/bin:/opt/sm/bin:/opt/sm/pkg/active/bin:/opt/sm/pkg/active/sbin

更新2:

ESL ~/Downloads$ export PATH=/usr/local/bin:$PATH
ESL ~/Downloads$ which git
/usr/local/bin/git
ESL ~/Downloads$ 
ESL ~/Downloads$ git --version
git version 1.8.1.3

看来我在本地安装了较新的 git 版本。那么我应该将export PATH=/usr/local/bin:$PATH 添加到我的.bash_profile 中吗?两个版本的git都安装有问题吗?

我在 ~/.bash_profile 的底部添加了export PATH=/usr/local/bin:$PATH,现在新版本的 git 运行了。

【问题讨论】:

  • which gitdisplaying 是什么? echo $PATH 的结果是否包含 /usr/local/bin
  • 我在上面的问题中添加了这两个。

标签: macos git osx-lion osx-mountain-lion


【解决方案1】:

在 Mac OSX 机器上更新任何二进制文件的最佳方法是使用专为 Mac 开发的软件包(.dmg 或 .pkg 下载)。

对于 git,它位于:http://git-scm.com/download/mac (点击此链接会自动开始下载最新版本的 Mac 版 git)。

但是,在这种情况下(至少对于我的 10.8.3 MacBook)来说,这并不是全部:软件包在 /usr/local/git 中安装 git,然后在 $PATH 的末尾添加该路径 - 这击败了整个目的 IMO。

我已经手动修改了我的.bashrc,以便获得类似于上面建议的内容:

export PATH=/usr/local/git/bin:$PATH

一旦你这样做了,你应该会看到选择了正确版本的 git:

$ git --version
git version 1.8.2.2 

请注意,这不适用于以交互方式启动的任何应用程序(例如,通过停靠栏) - 您必须运行下载包中提供的附加脚本;有关说明,请参阅README

【讨论】:

  • 有没有一种简单的方法可以撤消此更改?我只是想测试一下我尝试过的另一种方法是否有效。
【解决方案2】:

由于 /usr/bin 在路径中出现在 /usr/local/bin 之前,因此 /usr/bin 中的 git 可执行文件将优先。 在你的 shell 中试试这个:

export PATH=/usr/local/bin:$PATH
which git 

顺便说一句,我强烈建议使用homebrew 来管理诸如此类的macOS 上的安装

【讨论】:

  • 我在上面添加了你的测试结果,还有一些对应的问题。
  • 不,这不是问题,您已经安装了两个版本 - 您可以将该导出行添加到您的 ~/.bashrc 中,从那时起 /usr/local/bin 中的版本将始终优先。
  • 在这一点上,我应该仍然考虑自制还是留下我所拥有的?我对包管理器了解不多,所以我很想知道您为什么强烈推荐它。
  • 我绝对会推荐安装自制软件——尽管如果你的时间紧迫——对你的 mac 做进一步的改变可能不是今天的好主意 :) 自制软件做了一些很棒的事情——最在这种情况下,我认为相关的可能是:1)确保您安装的所有软件包都安装在安全的“沙盒”位置(即不直接污染您的 /usr/bin)。 2) 跟踪安装的内容及其相关版本,3) 允许您轻松地在版本之间切换。
  • 我用自制软件安装了新版本的 git。然后我删除了 /usr/bin 中的 git 文件,它工作了。
【解决方案3】:

我在 Cygwin(为 Windows 编译的 Linux 环境)中遇到了类似的问题。我会做的

which git

它会响应从源代码编译的更新 git 的正确位置,但在我这样做之前不会真正使用它

hash -r git

我并没有声称理解这是做什么的或为什么必须这样做,但在那之后git --version 回复了“1.8.2.rc0.22.gb3600c3”,这显然不再是旧的 git 附带的赛格温。这可能不适用于 OSX,但如果 which git 正在定位更新的二进制文件,请试一试。

【讨论】:

  • 我在问题中添加了我的which git$PATH。这会改变你的建议吗?
  • 不是真的,试试hash -r git 然后看看git --version 给你什么。
  • 谢谢!我不知道 shell 使用哈希表来存储可执行文件的路径。您也可以重新启动 shell,它也会清除哈希表。更多详情:crashingdaily.wordpress.com/2008/04/21/…
  • 我有一个问题,shell返回hash: too many arguments
最近更新 更多