111

I have installed the newest version of git (1.8.3) using homebrew but when I type

git --version

in my terminal, it prints:

git version 1.7.10.2 (Apple Git-33)

What should I do to replace the old version of git with the new one?

  • 2
    You have a couple good answers - so I wanted to comment on the question. Are you looking for explicit instructions to install git from source from homebrew or a GUI client or just confirmation that OS X bundles several versions of git with the core OS? opensource.apple.com/source/Git (FWIW - The newest git I've seen Apple bundle to date is 1.7.12.4 which comes from Git-37) – bmike Jun 3 '13 at 13:00

11 Answers 11

105

Thanks everyone for helpful answers. In my case adding

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

in ~/.bash_profile followed by

source ~/.bash_profile

solved the problem for my user.

  • 16
    If you want the change persistent across users, you can move /usr/local/bin above /usr/bin in /etc/paths. – kevin Nov 12 '13 at 5:08
  • 3
    This is the solution proposed by Homebrew itself when running brew doctor to diagnose the issue – VoxPelli Dec 4 '13 at 14:22
  • this answer should be updated with the KevinT proposed solution of defining /etc/paths. Defining only the "export" may not be enough, if /usr/bin has "precedence" over /usr/local/bin (from brew)... – emgsilva Dec 9 '13 at 11:43
  • 7
    Remember to restart terminal! Didn't occur to me until i saw Juan Diego Gonzales's comment below – Souleiman Jun 30 '15 at 14:33
  • 2
    @Souleiman: Restarting isn't necessary. source ~/.bash_profile will re-read that. Restarting is just probably faster/easier. :) – user2702 Oct 5 '15 at 23:12
43

Ok, I'm ready to get serious about scm.

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

Nope, that's not what I wanted. I <3 homebrew, so:

$ brew install git

All set?

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

Doh! (scratches head)

$ which git
/usr/bin/git

Ah, Apple's git is in /usr/bin, so it trumps the homebrew one. What to do?

(A) Just rename Apple's binary

(B) Let homebrew-managed one take precedence:

[edit PATH export e.g. in ~/.zshrc (oh-my-zsh + iTerm2 FTW! /tangent)]

[specifically: move /usr/local/bin/git: before /usr/bin:]

... and/or (e.g. to more broadly let homebrew stuff trump system installs, and have the precedence apply to all shells and users) also edit /etc/paths file, [moving /usr/local/bin above /usr/bin]

But assuming just the simplest / least invasive approach:

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

Did it work?

$ which git
/usr/local/bin/git

So far so good, now the moment of truth:

$ git --version
git version 2.2.1

w00t! :) Time to go read http://git-scm.com ! :)

  • PS Rel to comments about risks of editing /usr/bin: IMHO it's NBD. (Tho I do like Global nomad's sugg. to do "sudo ln -s /usr/local/bin/git /usr/bin/git" ... which ensures that anything calling "/usr/bin/git" explicitly will get your brew-managed one. But my take is, installing git implies you're taking ownership of git on your system. Worries about unknown processes using an older, alternate version of git, might be misplaced. I recommend keeping up to date w/ git versions (for security, not just features), and managing it yourself. Homebrew makes this easy. /$0.02 – cweekly Jun 17 '15 at 18:41
  • This didn't work for me, to undo it, just do: sudo mv /usr/bin/git-apple /usr/bin/git . Juan Diego Gonzales's comment worked. (basically, follow the accepted answer then restart terminal). – Souleiman Jun 30 '15 at 14:33
  • Even with which git pointing to /usr/local/bin/git, this didn't work for me. To solve this, I had to uninstall the GitHub Mac app. – Ben Dec 22 '15 at 18:28
  • 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 Jun 19 '17 at 13:45
  • These days it seems homebrew puts itself at the "front" of the PATH so hopefully no longer needed :) – rogerdpack Jan 9 '18 at 23:05
28

Status 2019

All the tricks mentioned here in several answers are not necessary anymore on macOS Sierra & Mojave with latest Homebrew. Forget export PATH="..."and modifications to ~/.bash_profile.

You simply do

brew install git

and your done.

To confirm, open a new (!) terminal window and type

git --version
  • 16
    I think this is right, but you need to open a new terminal or the change isn't picked up – robjwilkins Jun 28 '17 at 8:49
  • This does not work for me unfortunately. – rsp1984 Oct 6 '18 at 16:26
  • 1
    This worked for me on Mojave. I did have to open a new terminal. – Craig Otis Jan 2 at 11:45
  • 2
    brew link --overwrite git worked for me – wickdninja Feb 20 at 3:49
9

Once you've installed the latest git via brew (brew install git), run this one-liner (as suggested by brew doctor) if it isn't already there:

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

Then quit Terminal an open it again (restart your bash session). You need to do this even if your PATH was already correct, as ZSH and Bash cache the contents of PATH (see the documentation on the built-in command hash).

That should fix things really fast.

  • 1
    How does this differ from the accepted answer? – Mark Jan 21 '14 at 13:52
  • 6
    In my case, I didn't know I had to restart Terminal, so that part may help some people. Is faster than the accepted because of the one liner. If it's a competition I think my answer is misplaced. Otherwise I think it contributes. (Tell me if you want me to make an edit instead of this). – Juan Diego Gonzales Jan 22 '14 at 0:51
  • You do that one liner when you install Homebrew – Mark Jan 22 '14 at 12:19
  • 7
    I found this answer helpful. Restarting the terminal is a non-obvious issue for many people unfamiliar with the workings of .bash_profile, and a gentle reminder for the rest of us. – Magne Jan 28 '15 at 9:59
  • @JuanDiegoGonzales Excellent observation! I was wondering the exact same thing after I installed git and didn't know why. After the cache hint, I did a bit more research: unix.stackexchange.com/q/5609/52921 – kstratis Dec 7 '15 at 11:24
4

When you type

git --version

in Terminal.app or console, your comment on another question indicated the version it returns is the git in /usr/bin/git

If you installed Xcode 4.5 (and newer), and type

xcrun git --version

in Terminal.app or console, the version it returns is the git in the Xcode app bundle.

If you are using Homebrew to install and update git, the simplest solution is to

  1. make sure you have admin rights as you'll be asked for the password for the admin
  2. rename the original location by renaming it using mv. For example

    sudo mv /usr/bin/git /usr/bin/git-ORIGINAL

  3. create a soft link using 'ln -s' to the git binary you installed with Homebrew.

Note that MattDMo has a better solution in the comments.

  • Is this 100% safe? Will it break anything mac related? – Levani Jun 3 '13 at 15:58
  • If you follow the steps outlined, the solution won't break anything pre-installed since those git executables are not deleted. This is why at step 2 you should rename your original /usr/bin/git for e.g. as /usr/bin/git.BACKUP – Global nomad Jun 3 '13 at 16:09
  • 10
    Please don't do this - you really shouldn't be messing around with /usr/bin, as it's possible that other programs you don't even know about depend on vagaries associated with a particular version. The easiest solution, without moving anything, is to add /usr/local/bin to your $PATH environment variable before /usr/bin - IIRC, homebrew installs to /usr/local/bin – MattDMo Jun 3 '13 at 17:03
  • Thanks @MattDMo, that seem to be the best approach in this case. – Levani Jun 5 '13 at 13:25
2

I tried this and it works for me.

brew link --overwrite git
  • Worked for me on Mojave (10.14.4) – peppered Apr 1 at 11:14
1

You have to rename the original git by apple in /usr/bin/ to e. g. git-org since /usr/bin is normally before /usr/local/bin in your path directory where the brew stuff is.

So:

cd /usr/bin
sudo mv git git-org

and do not forget to link the brew git

brew link git

This assumes that /usr/local/bin is in your $PATH environment variable. If you still have problem try to run

brew doctor 

and fix the problems mentioned there.

  • 3
    Don;t rename or chnage things in /usr/bin as it could break Apple thigs and they will get chnaged when you do a system or XCode update. use the path which is what it is designed for, – Mark Jun 3 '13 at 14:16
  • @Mark you have a point. But I do not believe you will get trouble if you change only git in /usr/bin. For me it is working for several month. – Pfitz Jun 3 '13 at 14:18
  • I would agree that normally changing things in /usr/bin is bad news, but I can't recall OS X actually using git, so the harm there might be minuscule and only relate to a "clean" system that matches the receipts. The harm would be an update to OS X might replace the new git with an older version, hence the normal practice to locate a new binary outside the system path location. – bmike Jun 3 '13 at 16:13
  • 3
    I think it would be much easier to add /usr/local/bin (homebrew's install directory, IIRC) to the $PATH ahead of /usr/bin instead of mucking around with renaming and backing up, etc. – MattDMo Jun 3 '13 at 17:05
1

Install git with brew, the run this.

brew link --force git

Close and reopen terminal to run which git.

  • 1
    How does that change the default path? – Mark Apr 15 '17 at 6:46
  • This worked for me to override xcode's git. – surjikal Feb 15 '18 at 23:59
  • I got an error when running this but brew link --overwrite git worked – wickdninja Feb 20 at 3:48
0

If you are installing git from git-scm.com directly and would want to use the latest downloaded git instead of apple(old) version of git.

  1. Install git from git-scm.com
  2. Most probably new git will be installed in /usr/local/bin/git
  3. Try git --version, if it returns Apple old version of git then proceed below
  4. cd ~ (change directory to your home directory)
  5. type vi .bashrc
  6. Use i (to insert text in vi editor)
  7. If you find a line with export PATH......., press enter on top of the export and type the following: export PATH=/usr/local/:$PATH (Pay extreme caution with PATH variable do not mess it up else it will cause problems for your OS) (hopefully new git should be installed in /usr/local/git)
  8. Press esc
  9. Enter :wq (to save the .bashrc file)
  10. Exit out of terminal and start new terminal
  11. Now try git --version (you should see new version)
-1

It depends on where your git comes from. Xcode brings a version for example, maybe that is upfront in your path.

Maybe typing

which git

will show where the old one is.

  • it's in /usr/bin/git... – Levani Jun 3 '13 at 12:12
  • 2
    That looks like two installations. I think the normal (downloadable) git version goes to /usr/local/git/... It's then a question of adding that to the path or removing the other (or both) – Nicholaz Jun 3 '13 at 12:17
-2

To upgrade anything using Homebrew on OSX which involves compilation using gcc, make sure you have the updated Command Line Tools from Xcode—yeah, I know, it sucks having to hide a system-wide tool in the preferences of an app.

Steps

  1. Go to Xcode.app —> Preferences —> Downloads
  2. Update (or install) Command Line Tools
  3. Run brew doctor and fix all other hinderances
  4. Run brew upgrade to upgrade all packages at once

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .