如何在Mac上使用Homebrew安装的git?


115

我已经使用自制软件安装了最新版本的git(1.8.3),但是当我键入

git --version

在我的终端上,它打印:

git version 1.7.10.2 (Apple Git-33)

我应该怎么做才能用新版本替换旧版本的git?


2
您有几个很好的答案-所以我想对这个问题发表评论。您是否在寻找明确的说明,以从自制软件或GUI客户端从源代码安装git,或者只是确认OS X将git的多个版本与核心OS捆绑在一起?opensource.apple.com/source/Git(FWIW-我到目前为止看到的Apple捆绑包中最新的git是1.7.12.4,来自Git-37)
bmike

Answers:


105

感谢大家提供有用的答案。就我而言

export PATH="/usr/local/bin:${PATH}"

~/.bash_profile之后

source ~/.bash_profile

为我的用户解决了问题。


17
如果你想在用户之间持久的变化,你可以将/usr/local/bin上面/usr/bin/etc/paths
凯文

3
这是Homebrew本身在brew doctor诊断问题时提出的解决方案
VoxPelli 2013年

1
这个答案应该用KevinT提出的定义解决方案来更新/etc/paths。仅定义“出口”可能还不够,如果(从酿造中)/usr/bin具有“优先权” /usr/local/bin...
emgsilva 2013年

8
记住要重启终端!直到我在下面看到胡安·迭戈·冈萨雷斯(Juan Diego Gonzales)的评论时,我才想起
Souleiman 2015年

2
@Souleiman:无需重新启动。source ~/.bash_profile将重新阅读。重新启动可能只是更快/更容易。:)

43

好的,我准备认真对待scm。

$ git --version
git version 1.9.5 (Apple Git-50.3)

不,那不是我想要的。我<3自酿,所以:

$ brew install git

可以了,好了?

$ git --version
git version 1.9.5 (Apple Git-50.3)

h!(抓头)

$ which git
/usr/bin/git

啊,Apple的git在/ usr / bin中,所以它胜过自制软件。该怎么办?

(A)只需重命名Apple的二进制文件

(B)让自制软件管理一个优先级:

[编辑PATH导出,例如〜/ .zshrc(oh-my-zsh + iTerm2 FTW!/ tangent)]

[具体来说:将/ usr / local / bin / git:移至/ usr / bin之前:]

...和/或(例如,为了更广泛地安装自制软件,并且优先于所有外壳程序和用户使用)还编辑/ etc / paths文件,[将/ usr / local / bin移至/ usr / bin上方]

但假设仅是最简单/侵入性最小的方法:

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

奏效了吗?

$ which git
/usr/local/bin/git

到目前为止一切顺利,现在是关键时刻:

$ git --version
git version 2.2.1

w00t!:)是时候阅读http://git-scm.com了!:)


PS Rel对编辑/ usr / bin的风险发表评论:恕我直言,它是NBD。(我喜欢Global Nomad的建议。执行“ sudo ln -s / usr / local / bin / git / usr / bin / git” ...可以确保明确调用“ / usr / bin / git”的任何内容您的brew管理的。但是我的看法是,安装git意味着您对系统拥有git的所有权。担心使用较旧的替代版本git的未知进程可能会引起误解。 /$0.02
cweekly15年

要撤消它,这对我不起作用,只需这样做:sudo mv / usr / bin / git-apple / usr / bin / git。Juan Diego Gonzales的评论奏效。(基本上,按照接受的答案,然后重新启动终端)。
Souleiman 2015年

即使which git指向/usr/local/bin/git,这对我也不起作用。为了解决这个问题,我必须卸载GitHub Mac应用程序。
2015年

2
MacOS 10.12.5:sudo mv /usr/bin/git /usr/bin/git-apple mv: rename /usr/bin/git to /usr/bin/git-apple: Operation not permitted
Vladislav Rastrusny

这些天,自制软件似乎将自己置于PATH的“前端”,因此希望不再需要它了:)
rogerdpack

32

状态2019

带有最新Homebrew的macOS Sierra&Mojave不再需要此处几个答案中提到的所有技巧。忘记export PATH="..."和修改~/.bash_profile

你干嘛

brew install git

和你完成。

要确认,请打开一个新的(!)终端窗口,然后键入

git --version

16
我认为这是正确的,但是您需要打开一个新终端,或者更改没有被接受
robjwilkins

不幸的是,这对我不起作用。
rsp1984 '18 -10-6

2
这在莫哈韦沙漠上对我有用。我确实必须打开一个新终端。
Craig Otis

2
brew link --overwrite git为我工作
wickdninja

9

通过brew(brew install git)安装了最新的git后,请运行此单行代码(如推荐brew doctor),如果还没有的话:

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

然后退出终端并再次打开它(重新启动bash会话)。即使您的PATH已经正确,您也需要这样做,因为ZSH和Bash会缓存PATH的内容(请参阅内置命令上的文档hash)。

那应该可以很快地解决问题。


1
这与公认的答案有何不同?
user151019 2014年

6
就我而言,我不知道我必须重新启动Terminal,所以这部分内容可能会对某些人有所帮助。由于一线而比公认的快。如果是比赛,我想我的答案放错了地方。否则,我认为它有所贡献。(如果您要我代替它进行编辑,请告诉我)。
Juan Diego Gonzales 2014年

您在安装Homebrew时会做一根衬纸
user151019 2014年

7
我发现这个答案很有帮助。对于许多不熟悉.bash_profile运作方式的人来说,重新启动终端不是一个显而易见的问题,它对我们其他人也是一个温柔的提醒。
Magne

@JuanDiegoGonzales很棒的观察!我在安装git后不知道为什么会完全相同。在缓存提示之后,我做了一些进一步的研究:unix.stackexchange.com/q/5609/52921
kstratis

4

当您键入

git --version

在Terminal.app或控制台中,您对另一个问题的评论表明它返回的版本是/ usr / bin / git中的git。

如果您安装了Xcode 4.5(及更高版本),然后键入

xcrun git --version

在Terminal.app或控制台中,它返回的版本是Xcode应用程序包中的git。

如果您使用Homebrew安装和更新git,最简单的解决方案是

  1. 确保您具有管理员权限,因为系统会要求您输入管理员密码
  2. 通过使用mv重命名原始位置来重命名原始位置。例如

    须藤MV / usr / bin / git / usr / bin / git-ORIGINAL

  3. 使用'ln -s'创建与您通过Homebrew安装的git二进制文件的软链接。

请注意,MattDMo在注释中有更好的解决方案。


这是100%安全的吗?它会破坏任何与mac相关的东西吗?
Levani 2013年

如果您遵循列出的步骤,该解决方案将不会破坏任何预安装的内容,因为这些git可执行文件不会被删除。这就是为什么在第2步中应将原始的/ usr / bin / git重命名为例如/usr/bin/git.BACKUP
Global nomad

10
请不要这样做-您实际上不应该搞混/usr/bin,因为您甚至不了解的其他程序可能取决于与特定版本相关的变化。最简单的解决方案是不添加任何内容,而是在/usr/local/bin$PATH/usr/bin/usr/local/bin
-IIRC

感谢@MattDMo,在这种情况下,这似乎是最好的方法。
Levani 2013年

2

我尝试了这个,对我有用。

brew link --overwrite git

为我工作在莫哈韦(10.14.4)
穿插

1

您必须通过apple将原始git重命名为/usr/bin/git-org,因为/usr/bin通常在/usr/local/bin酿造物所在的路径目录中。

所以:

cd /usr/bin
sudo mv git git-org

并且不要忘记链接Brew git

brew link git

假设这/usr/local/bin是在您的$PATH环境变量中。如果仍有问题,请尝试运行

brew doctor 

并解决那里提到的问题。


3
不要重命名或更改/ usr / bin中的内容,因为它可能会破坏Apple提示,并且在执行系统或XCode更新时它们会被更改。使用为其设计的路径,
2013年

@标记您有意思。但是我不相信如果只更改/ usr / bin中的git不会麻烦。对我来说,它工作了几个月。
菲菲兹2013年

我同意通常更改/ usr / bin中的内容是个坏消息,但我无法真正使用git来回忆OS X,因此危害可能很小,并且仅与匹配收据的“干净”系统有关。危害在于OS X的更新可能会用较旧的版本替换新的git,因此通常的做法是在系统路径位置之外定位新的二进制文件。
bmike

3
我认为这将是很容易添加/usr/local/bin(自制程序的安装目录,IIRC)在$PATH提前/usr/bin,而不是用重命名摆弄周围和备份等
MattDMo

1

用brew安装git,运行它。

brew link --force git

关闭并重新打开终端以运行which git


1
如何更改默认路径?
user151019 '17

这对我来说覆盖了xcode的git。
surjikal

运行此程序时出现错误,但可以正常brew link --overwrite git工作
wickdninja

0

如果您是直接从git-scm.com安装git,并且想要使用最新下载的git而不是git的apple(旧)版本。

  1. 从git-scm.com安装git
  2. 新的git很可能会安装在 /usr/local/bin/git
  3. 试试看git --version,如果它返回Apple旧版本的git,请继续以下操作
  4. cd ~ (将目录更改为您的主目录)
  5. 类型 vi .bashrc
  6. 使用i(在vi编辑器中插入文本)
  7. 如果找到带有的行export PATH.......,请在导出的顶部按Enter键,然后键入以下内容:(请export PATH=/usr/local/:$PATH特别注意PATH不要将变量弄乱,否则会给您的OS造成问题)(希望应该在中安装新的git /usr/local/git
  8. 按ESC
  9. 输入:wq(保存.bashrc文件)
  10. 退出终端并启动新终端
  11. 现在尝试git --version(您应该看到新版本)

-1

这取决于您的git来自何处。例如,Xcode带来了一个版本,它也许是您前进的道路。

也许打字

which git

将显示旧的位置。


它在/usr/bin/git...
Levani

2
看起来像两个安装。我认为正常的(可下载的)git版本位于/ usr / local / git / ...这是将其添加到路径中或删除其他(或两者)的问题
Nicholaz 2013年

-2

要在OSX上使用Homebrew进行升级(涉及使用gcc进行编译),请确保已从Xcode获得更新的命令行工具-是的,我知道,这很麻烦,必须在应用程序的首选项中隐藏系统范围的工具。

脚步

  1. 转到Xcode.app->首选项->下载
  2. 更新(或安装)命令行工具
  3. 运行brew doctor并解决所有其他障碍
  4. 运行brew upgrade一次升级所有软件包
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.