如何在macOS上将Git升级到最新版本?


165

我刚刚购买了带有OS X Lion的新Mac,并在终端中检查了默认情况下安装的git版本。我得到了答案

git --version
> git version 1.7.5.4

我想将git升级到最新版本1.7.8.3,因此我下载了dmg安装程序“ git-1.7.8.3-intel-universal-snow-leopard.dmg”,并启动了它。

安装后,终端仍然会说版本是1.7.5.4。我究竟做错了什么?


4
键入which git以查看二进制文件在哪里。安装新的位置是在同一位置吗?
Greg Hewgill 2012年

4
它说/usr/bin/git的是1.7.5.4,但是我怎么知道DMG在哪里安装了新版本?为什么它不自动升级/覆盖以前的版本?如果要使用git新版本,如何将命令链接到新版本?(顺便感谢您的快速回答!)
Nicolas Renon 2012年

1
在我的Mac(OS 10.6.8)上,旧git 1.7.5.4位于/ usr / bin / git中,而新git安装程序1.7.11.3将git放入/ usr / local /
miker 2012年

我想知道superuser.com/a/580611/74576是否是个好方法。我希望我能弄清楚它的命令。
瑞安

我在.bash_profile中输入了内容,而不是.bashrc,它起作用了。我认为,如果您的终端以“默认登录外壳”运行,则会发生这种情况。
Swapnil Chincholkar

Answers:


58

如果添加以下内容可能会更好:

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

到主文件夹中名为.bashrc的文件。这样一来,您可能会安装的任何其他软件/usr/local/git/bin也将首先找到。

为了做到这一点,只需输入以下内容即可:

echo "export PATH=/usr/local/git/bin:/usr/local/sbin:$PATH" >> ~/.bashrc

进入终端,它将为您完成。


1
就像README.txt所说的那样,git被安装到/ usr / local / git。
bananaaus 2012年

18
kmikael的便捷提示仅适用于bash。(要更改mac默认外壳,请在系统首选项中解锁帐户或“用户和组”窗口,请按住Control键单击“高级选项”帐户。)使用bash_profile而不是bashrc的建议,例如echo 'export PATH="/usr/local/git/bin:/usr/local/sbin:~/bin:$PATH"' >> ~/.bash_profile,在moncefbelyamani.com上。在superuser.com上
miker 2012年

您用来安装git什么?我刚刚检查了最新版本,此处的官方安装程序将git安装到/usr/local/git/bin/git,这意味着上述方法仍应在10.8.4上有效。
kmikael 2013年

感谢@miker,它对.bash_profile有用,但对.bashrc不起作用。
adimauro 2014年

我取消选中此解决方案,即使它可行。请阅读我的消息更新以获取解释。
Nicolas Renon 2014年

52

如果您已经有了Homebrew,这很简单:假设您已安装Homebrew,请键入以下内容:

brew install git

安装完成后,键入以下两行,这会将我们的路径设置为本地git发行版,而不是Apple发行版。

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

如果您没有自制软件, 请按照以下步骤检查版本

$ git --version

备份(或删除)Apple git(可选)

$ sudo mv /usr/bin/git /usr/bin/git-apple

如果没有,请安装Homebrew

$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

或更新(如果您已经拥有)

$ brew update && brew upgrade

使用Homebrew安装Git

$ brew install git

符号链接

$ brew link --force git

关闭终端并重新打开,然后检查版本

$ git --version

你应该看到...

git version <latest version>

真好!我们现在很安全!下次您可以…

$ brew update && brew upgrade


10
关于sudo mv /usr/bin/git /usr/bin/git-apple:重命名系统git在macOS El Capitan和更高版本上将不起作用,除非您按照apple.stackexchange.com/a/248229/16290所述禁用系统完整性保护。就我个人而言,我只是更新我的,PATH所以才/usr/local/bin出现/usr/bin。这样,Homebrew的git始终优先(在关闭终端并重新打开之后)。对于git安全漏洞,Apple最终将使用其安全更新来更新捆绑的git。同时,您可以按照上述说明通过配置PATH来避免使用内置git。
Nate Cook

16

在Google上搜索“在Mac上麻烦升级git”后,我阅读了几篇文章,并尝试了以下操作,然后通过完成步骤4解决了该问题:

  1. 我使用上述导出命令更新了终端路径。每次我退出终端并重新启动终端时,在键入git --version终端时,终端仍会返回旧版本1.8。

  2. 我按照README.txt指示进行了升级,以升级到.dmg安装程序随附的当前版本2.0.1,并且当我重新启动终端时,仍然无法执行。

  3. 我按照上面的指示查找了/ etc / path /文件夹,并且Mac上不存在名为“ path”的目录。我正在运行OS X Mavericks版本10.9.4。

  4. 然后我回想起我在Mac上安装了Homebrew并运行了以下命令:

    brew --version
    brew update
    brew search git
    brew install git
    

这终于解决了我的问题。如果有人对为什么这样做有所了解,将不胜感激。去年与Ruby一起使用时,我的系统上可能剩下一些路径设置。


1
我已经安装了git。因此,在执行最后一步时,brew install git我收到一条错误消息,并建议执行该brew upgrade git命令。你是男人!那简直就是招数:)
Pathros

15

我最近在OS X机器上也将Git升级到了最新版本。我没有使用与.dmg您以前使用的相同的文件,但在安装二进制文件时将它们放入/usr/local/bin。现在,按照我的PATH排列方式,目录/usr/bin出现在之前/usr/local/bin。所以我做的是:

cd /usr/bin
mkdir git.ORIG
mv git* git.ORIG/

这会将几个原始程序移动git*到一个新的子目录中,以防止它们进入。之后,which git表明/usr/local/bin已找到一个。

根据需要修改上述过程,以适应新二进制文件的安装位置。


2
谢谢!实际上,新的二进制文件已放入/usr/local/git
Nicolas Renon 2012年

1
注意:我必须重新启动终端才能看到新的git。似乎很明显,但是起初我很困惑。
migg

15

如果使用自制软件,则可以使用

brew link --overwrite git

我尝试了以上所有其他答案,这终于使我有了最新版本的git。运行为brew install git我提供了最新版本,但未正确设置符号链接。运行brew link git给我一个错误,它不能符号链接git,因为它已经存在。终于brew link --overwrite git把钉子钉在棺材上了,所以现在git --version表明我使用的是最新版本的git
Gharbad The Weak

7

git主页上的安装程序/usr/local/git默认安装到。但是,如果您安装XCode4,它将在中安装git版本/usr/bin。为了确保您可以轻松地从网站升级并使用最新的git版本,请编辑个人资料信息以放置在$ PATH/usr/local/git/bin之前/usr/bin,或者编辑并插入为第一项。/etc/paths/usr/local/git/bin

这可能至少有助于某人更改/ etc / paths中为我工作的顺序。



6

我使用以下内容在Mac上升级git。

hansi$ brew install git 

hansi$ git --version 
git version 2.19.0


hansi$ brew install git
Warning: git 2.25.1 is already installed, it's just not linked
You can use `brew link git` to link this version.

hansi$ brew link git 
Linking /usr/local/Cellar/git/2.25.1... 
Error: Could not symlink bin/git
Target /usr/local/bin/git
already exists. You may want to remove it:
  rm '/usr/local/bin/git'

To force the link and overwrite all conflicting files:
  brew link --overwrite git

To list all files that would be deleted:
  brew link --overwrite --dry-run git

hansi$ brew link --overwrite git 
Linking /usr/local/Cellar/git/2.25.1... 205 symlinks created


hansi$ git --version
git version 2.25.1

在我的情况下,我已经安装了git,然后再次使用自制软件安装了Homebrew,该软件下载了新版本,但未正确链接。我最终需要手动取消链接,然后重新链接然后就可以了。我还需要重新打开终端会话,以便它将找到新版本,而不是旧版本/系统版本: brew unlink git && brew link git && source ~/.bashrc
FireDragon


2

为了保留两个版本,我只是通过将新版本的git路径放在“ / usr / local / git / bin /”的开头来更改PATH环境变量的值,它强制使用最新版本:

$ echo $ PATH

/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ opt / X11 / bin:/ usr / local / git / bin /

$ git-版本

git版本2.4.9(Apple Git-60)

原始值: / usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ opt / X11 / bin:/ usr / local / git / bin /

新值: / usr / local / git / bin /:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ opt / X11 / bin

$ export PATH = / usr / local / git / bin /:/ usr / bin:/ bin:/ usr / sbin:/ sbin:/ usr / local / bin:/ opt / X11 / bin

$ git-版本

git版本2.13.0


1

没有自制

  1. 使用git网站上的安装程序
  2. 更新您的~/.bash_profile文件。请注意,此命令与kmikael的答案不同之处在于它在文件中的内容:
    • 其他命令: export PATH=/usr/local/git/bin:/usr/local/sbin/:[and so on]
    • 下面的命令: export PATH="/usr/local/git/bin:/usr/local/sbin:$PATH"
    • 使用您喜欢的任何一个。

echo 'export PATH="/usr/local/git/bin:/usr/local/sbin:$PATH"' >> ~/.bash_profile

  1. 如果您使用的是Xcode,则需要添加一些符号链接
    • 例: ln -s /opt/local/bin/git /usr/bin/git
  2. 重新启动终端。
    • which git 应该说的目录 README.txt dmg文件中。
    • git --version 应该说更新的版本。
    • echo $PATH 应该从 /usr/local/git/bin:/usr/local/sbin:

0

我宁愿不更改路径层次结构,而是专门处理git ... 知道我永远不会使用旧git来完成新git现在可以管理的工作。这是蛮力的解决方案。

注意:我干净地在优胜美地(10.10.2)上安装了XCode

然后,我从git-scm.com上可用的二进制文件进行安装

$ which git
/usr/bin/git
$ cd /usr/bin
$ sudo ln -sf /usr/local/git/bin/git
$ sudo ln -sf /usr/local/git/bin/git-credential-osxkeychain
$ sudo ln -sf /usr/local/git/bin/git-cvsserver
$ sudo ln -sf /usr/local/git/bin/git-receive-pack
$ sudo ln -sf /usr/local/git/bin/git-shell
$ sudo ln -sf /usr/local/git/bin/git-upload-archive
$ sudo ln -sf /usr/local/git/bin/git-upload-pack
$ ls -la
(you should see your new symlinks)

0

我这样做是这样的:

  1. 打开Mac上安装的GitHub应用程序
  2. 单击高级选项卡→安装命令行工具
  3. 收到所有命令已安装的消息后,请关闭终端并重新打开。
  4. 现在检查git --version,它应该为您提供最新版本。

0

您需要调整外壳程序路径,该路径将在您的主目录中的.bashrc或.bash_profile中设置,更可能是.bash_profile

因此,添加类似于以下内容的路径,并保留路径中已经存在的内容,每个段都用冒号分隔:

导出PATH =“ / usr / local / bin:/ usr / bin / git:/ usr / bin:/ usr / local / sbin:$ PATH”


0

最新版本无法在git-scm.com上以mac的二进制形式获得,因此我从源代码安装。我缺少本地化所需的软件包,因此添加NO_GETTEXT=true了没有本地化的安装包。

git clone https://github.com/git/git.git
cd git
make NO_GETTEXT=true
make NO_GETTEXT=true install

这种安装git~/bin,我只好再添加到我的开始PATH变量。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.