Bagaimana cara menggunakan Homebrew diinstal git di Mac?

116

Saya telah menginstal versi terbaru git (1.8.3) menggunakan homebrew tetapi ketika saya mengetik

git --version

di terminal saya, ia mencetak:

git version 1.7.10.2 (Apple Git-33)

Apa yang harus saya lakukan untuk mengganti versi lama git dengan yang baru?

Levani
sumber
2
Anda punya pasangan jawaban yang bagus - jadi saya ingin mengomentari pertanyaan itu. Apakah Anda mencari instruksi eksplisit untuk menginstal git dari sumber dari homebrew atau klien GUI atau hanya konfirmasi bahwa OS X menggabungkan beberapa versi git dengan OS inti? opensource.apple.com/source/Git (FWIW - Git terbaru yang pernah saya lihat bundel Apple hingga saat ini adalah 1.7.12.4 yang berasal dari Git-37)
bmike

Jawaban:

106

Terima kasih semuanya atas jawaban yang bermanfaat. Dalam kasus saya menambahkan

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

di ~/.bash_profilediikuti oleh

source ~/.bash_profile

memecahkan masalah untuk pengguna saya.

Levani
sumber
17
Jika Anda ingin perubahan terus-menerus di seluruh pengguna, Anda dapat pindah ke /usr/local/binatas /usr/bindi /etc/paths.
kevin
3
Ini adalah solusi yang diusulkan oleh Homebrew sendiri ketika berlari brew doctoruntuk mendiagnosis masalah tersebut
VoxPelli
1
jawaban ini harus diperbarui dengan solusi definisi yang diusulkan KevinT /etc/paths. Menentukan hanya "ekspor" mungkin tidak cukup, jika /usr/binmemiliki "prioritas" lebih /usr/local/bindari (dari minuman) ...
emgsilva
8
Ingatlah untuk memulai kembali terminal! Tidak terpikir oleh saya sampai saya melihat komentar Juan Diego Gonzales di bawah ini
Souleiman
2
@ Souleiman: Restart tidak perlu. source ~/.bash_profileakan membaca kembali itu. Restart mungkin lebih cepat / mudah. :)
44

Ok, saya siap serius tentang scm.

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

Tidak, bukan itu yang saya inginkan. Saya <3 buatan sendiri, jadi:

$ brew install git

Siap?

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

Doh! (goresan kepala)

$ which git
/usr/bin/git

Ah, git Apple ada di / usr / bin, jadi itu mengalahkan yang homebrew. Apa yang harus dilakukan?

(A) Cukup ganti nama biner Apple

(B) Biarkan yang dikelola oleh homebrew diutamakan:

[sunting ekspor PATH misalnya dalam ~ / .zshrc (oh-my-zsh + iTerm2 FTW! / tangent)]

[khusus: pindah / usr / local / bin / git: sebelum / usr / bin:]

... dan / atau (mis. untuk secara lebih luas menginstal sistem trump barang homebrew, dan mendahulukan berlaku untuk semua shell dan pengguna) juga mengedit / etc / paths file, [memindahkan / usr / local / bin di atas / usr / bin ]

Tetapi dengan asumsi hanya pendekatan paling sederhana / paling tidak invasif:

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

Apa itu bekerja?

$ which git
/usr/local/bin/git

Sejauh ini bagus, sekarang momen kebenaran:

$ git --version
git version 2.2.1

w00t! :) Saatnya membaca http://git-scm.com ! :)

setiap minggu
sumber
PS Rel ke komentar tentang risiko mengedit / usr / bin: IMHO itu NBD. (Saya suka Global nomad's sugg. Melakukan "sudo ln -s / usr / local / bin / git / usr / bin / git" ... yang memastikan bahwa apa pun yang memanggil "/ usr / bin / git" secara eksplisit akan mendapatkan yang dikelola oleh bir Anda. Tetapi pendapat saya adalah, menginstal git menyiratkan Anda mengambil kepemilikan git pada sistem Anda. Kekhawatiran tentang proses yang tidak diketahui menggunakan versi git yang lebih lama, mungkin salah tempat. Saya sarankan tetap up to date dengan saya versi git (untuk keamanan, bukan hanya fitur), dan mengelolanya sendiri. Homebrew menjadikan ini mudah. ​​/$0.02
cweekly
Ini tidak berhasil bagi saya, untuk membatalkannya, lakukan saja: sudo mv / usr / bin / git-apple / usr / bin / git. Komentar Juan Diego Gonzales berhasil. (pada dasarnya, ikuti jawaban yang diterima kemudian restart terminal).
Souleiman
Bahkan dengan which gitmenunjuk /usr/local/bin/git, ini tidak berhasil untuk saya. Untuk mengatasi ini, saya harus menghapus aplikasi GitHub Mac.
Ben
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
Hari-hari ini tampaknya homebrew menempatkan dirinya di "depan" PATH jadi mudah-mudahan tidak diperlukan lagi :)
rogerdpack
32

Status 2019

Semua trik yang disebutkan di sini dalam beberapa jawaban tidak diperlukan lagi di macOS Sierra & Mojave dengan Homebrew terbaru. Lupakan export PATH="..."dan modifikasi ~/.bash_profile.

Anda cukup melakukannya

brew install git

dan Anda selesai.

Untuk mengonfirmasi, buka jendela terminal baru dan ketik

git --version
Jpsy
sumber
16
Saya pikir ini benar, tetapi Anda perlu membuka terminal baru atau perubahan tidak diambil
robjwilkins
Sayangnya, ini tidak berhasil untuk saya.
rsp1984
2
Ini bekerja untuk saya di Mojave. Saya memang harus membuka terminal baru.
Craig Otis
2
brew link --overwrite gitbekerja untuk saya
wickdninja
9

Setelah Anda menginstal git terbaru via brew ( brew install git), jalankan one-liner ini (seperti yang disarankan oleh brew doctor) jika belum ada di sana:

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

Kemudian keluar dari Terminal dan buka kembali (restart sesi bash Anda). Anda perlu melakukan ini bahkan jika PATH Anda sudah benar, karena ZSH dan Bash cache isi PATH (lihat dokumentasi pada perintah bawaan hash).

Itu harus memperbaiki hal-hal dengan sangat cepat.

Juan Diego Gonzales
sumber
1
Apa bedanya dengan jawaban yang diterima?
user151019
6
Dalam kasus saya, saya tidak tahu harus me-restart Terminal, sehingga bagian itu dapat membantu beberapa orang. Lebih cepat daripada yang diterima karena one liner. Jika ini adalah kompetisi saya pikir jawaban saya salah tempat. Kalau tidak, saya pikir itu berkontribusi. (Beri tahu saya jika Anda ingin saya mengedit alih-alih ini).
Juan Diego Gonzales
Anda melakukan itu satu liner ketika Anda menginstal Homebrew
user151019
7
Saya menemukan jawaban ini bermanfaat. Restart terminal adalah masalah yang tidak jelas bagi banyak orang yang tidak terbiasa dengan cara kerja .bash_profile, dan pengingat yang lembut bagi kita semua.
Magne
@JuanDiegoGonzales Pengamatan yang bagus! Saya bertanya-tanya hal yang persis sama setelah saya menginstal git dan tidak tahu mengapa. Setelah petunjuk cache , saya melakukan sedikit riset lebih lanjut: unix.stackexchange.com/q/5609/52921
kstratis
4

Saat Anda mengetik

git --version

di Terminal.app atau konsol, komentar Anda pada pertanyaan lain menunjukkan versi yang dikembalikan adalah git di / usr / bin / git

Jika Anda menginstal Xcode 4.5 (dan yang lebih baru), dan ketik

xcrun git --version

di Terminal.app atau konsol, versi yang dikembalikan adalah git di bundel aplikasi Xcode.

Jika Anda menggunakan Homebrew untuk menginstal dan memperbarui git, solusi paling sederhana adalah dengan

  1. pastikan Anda memiliki hak admin karena Anda akan dimintai kata sandi untuk admin
  2. ganti nama lokasi asli dengan mengganti namanya menggunakan mv. Sebagai contoh

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

  3. buat tautan lunak menggunakan 'ln -s' ke biner git yang Anda instal dengan Homebrew.

Perhatikan bahwa MattDMo memiliki solusi yang lebih baik dalam komentar.

Pengembara global
sumber
Apakah ini 100% aman? Apakah akan merusak mac terkait?
Levani
Jika Anda mengikuti langkah-langkah yang diuraikan, solusi tidak akan merusak apa pun yang sudah diinstal sejak git executable itu tidak dihapus. Inilah sebabnya mengapa pada langkah 2 Anda harus mengganti nama asli / usr / bin / git untuk misalnya sebagai /usr/bin/git.BACKUP
Global nomad
10
Tolong jangan lakukan ini - Anda benar-benar tidak boleh main-main dengan /usr/bin, karena ada kemungkinan bahwa program lain yang Anda bahkan tidak tahu tentang tergantung pada pengembara yang terkait dengan versi tertentu. Solusi termudah, tanpa memindahkan apa pun, adalah menambahkan /usr/local/binke $PATHvariabel lingkungan Anda sebelum /usr/bin- IIRC, menginstal homebrew ke/usr/local/bin
MattDMo
Terima kasih @MattDMo, itu tampaknya menjadi pendekatan terbaik dalam hal ini.
Levani
2

Saya mencoba ini dan itu berhasil untuk saya.

brew link --overwrite git
Song WANG
sumber
Bekerja untuk saya di Mojave (10.14.4)
dibumbui
1

Anda harus mengganti nama git asli dengan apel /usr/bin/menjadi eg git-org karena /usr/binbiasanya sebelumnya /usr/local/bindi direktori path Anda di mana brew stuff berada.

Begitu:

cd /usr/bin
sudo mv git git-org

dan jangan lupa untuk menautkan brit git

brew link git

Ini mengasumsikan bahwa /usr/local/binada dalam $PATHvariabel lingkungan Anda . Jika Anda masih memiliki masalah, coba jalankan

brew doctor 

dan memperbaiki masalah yang disebutkan di sana.

Pfitz
sumber
3
Jangan mengganti nama atau mengubah hal-hal di / usr / bin karena itu dapat merusak Apple thig dan mereka akan dikurangkan ketika Anda melakukan pembaruan sistem atau XCode. gunakan jalan yang dirancang untuk itu,
user151019
@ Markus Anda benar. Tapi saya tidak percaya Anda akan mendapat masalah jika Anda hanya mengubah git di / usr / bin. Bagi saya itu bekerja selama beberapa bulan.
Pfitz
Saya setuju bahwa biasanya mengubah hal-hal di / usr / bin adalah berita buruk, tapi saya tidak dapat mengingat OS X benar-benar menggunakan git, jadi kerugiannya mungkin sangat kecil dan hanya berhubungan dengan sistem "bersih" yang cocok dengan tanda terima. Kerugiannya akan menjadi pembaruan untuk OS X mungkin menggantikan git baru dengan versi yang lebih lama, maka praktik normal untuk menemukan biner baru di luar lokasi jalur sistem.
bmike
3
Saya pikir akan lebih mudah untuk menambahkan /usr/local/bin(direktori instalasi homebrew, IIRC) ke $PATHdepan /usr/bindaripada mucking sekitar dengan mengubah nama dan mencadangkan, dll.
MattDMo
1

Instal git dengan brew, jalankan ini.

brew link --force git

Tutup dan buka kembali terminal untuk dijalankan which git.

John
sumber
1
Bagaimana cara mengubah jalur default?
user151019
Ini berhasil bagi saya untuk menimpa git xcode.
surjikal
Saya mendapat kesalahan saat menjalankan ini tetapi brew link --overwrite gitberhasil
wickdninja
0

Jika Anda menginstal git dari git-scm.com secara langsung dan ingin menggunakan git yang diunduh terbaru daripada versi git apple (lama).

  1. Instal git dari git-scm.com
  2. Kemungkinan besar git baru akan diinstal di /usr/local/bin/git
  3. Coba git --version, jika itu mengembalikan versi lama Apple git kemudian lanjutkan di bawah ini
  4. cd ~ (ubah direktori ke direktori home Anda)
  5. Tipe vi .bashrc
  6. Gunakan i(untuk menyisipkan teks dalam editor vi)
  7. Jika Anda menemukan baris dengan export PATH......., tekan enter di atas ekspor dan ketik yang berikut: export PATH=/usr/local/:$PATH(Bayar sangat hati-hati dengan PATHvariabel jangan mengacaukannya lagi itu akan menyebabkan masalah untuk OS Anda) (mudah-mudahan git baru harus diinstal di /usr/local/git)
  8. Tekan esc
  9. Masukkan :wq(untuk menyimpan .bashrcfile)
  10. Keluar dari terminal dan mulai terminal baru
  11. Sekarang coba git --version(Anda akan melihat versi baru)
dataramr
sumber
-1

Itu tergantung dari mana git Anda berasal. Xcode membawa versi misalnya, mungkin itu dimuka di jalur Anda.

Mungkin mengetik

which git

akan menunjukkan di mana yang lama.

Nicholaz
sumber
itu di /usr/bin/git...
Levani
2
Itu terlihat seperti dua instalasi. Saya pikir versi git yang normal (dapat diunduh) pergi ke / usr / local / git / ... Ini kemudian pertanyaan untuk menambahkan itu ke jalan atau menghapus yang lain (atau keduanya)
Nicholaz
-2

Untuk memutakhirkan apa pun yang menggunakan Homebrew di OSX yang melibatkan kompilasi menggunakan gcc, pastikan Anda memiliki Alat Baris Perintah yang diperbarui dari Xcode — yeah, saya tahu, ini menyebalkan karena harus menyembunyikan alat di seluruh sistem dalam preferensi aplikasi.

Langkah

  1. Buka Xcode.app -> Preferensi -> Unduhan
  2. Perbarui (atau instal) Alat Baris Perintah
  3. Jalankan brew doctordan perbaiki semua hambatan lainnya
  4. Jalankan brew upgradeuntuk memperbarui semua paket sekaligus
iGbanam
sumber