จะใช้งาน Homebrew git ที่ติดตั้งบน Mac ได้อย่างไร?


115

ฉันได้ติดตั้ง git รุ่นล่าสุด (1.8.3) โดยใช้ homebrew แต่เมื่อฉันพิมพ์

git --version

ในเทอร์มินัลของฉันมันพิมพ์:

git version 1.7.10.2 (Apple Git-33)

ฉันควรทำอย่างไรเพื่อแทนที่ git เวอร์ชันเก่าด้วยใหม่


2
คุณมีคำตอบที่ดีสองสามข้อดังนั้นฉันต้องการแสดงความคิดเห็นกับคำถาม คุณกำลังมองหาคำแนะนำที่ชัดเจนในการติดตั้ง git จากแหล่งที่มาจาก homebrew หรือไคลเอนต์ GUI หรือเพียงยืนยันว่า OS X รวม git หลายเวอร์ชันเข้ากับ core OS หรือไม่ opensource.apple.com/source/Git (FWIW - git ใหม่ล่าสุดที่ฉันเคยเห็นในกลุ่ม Apple คือ 1.7.12.4 ซึ่งมาจาก Git-37)
bmike

คำตอบ:


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

1
คำตอบนี้ควรได้รับการปรับปรุงด้วยโซลูชั่นที่นำเสนอ KevinT /etc/pathsของการกำหนด การกำหนดเพียง "ส่งออก" อาจไม่เพียงพอหาก/usr/binมี "ลำดับความสำคัญ" มากกว่า/usr/local/bin(จากการชง) ...
emgsilva

8
อย่าลืมรีสตาร์ท terminal! ไม่ได้เกิดขึ้นกับฉันจนกว่าฉันจะเห็นความคิดเห็นของ Juan Diego Gonzales ด้านล่าง
Souleiman

2
@Souleiman: ไม่จำเป็นต้องเริ่มระบบใหม่ source ~/.bash_profileจะอ่านใหม่ การเริ่มต้นอาจเร็วขึ้น / ง่ายขึ้น :)

43

ตกลงฉันพร้อมที่จะจริงจังเกี่ยวกับ SCM

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

ไม่นั่นไม่ใช่สิ่งที่ฉันต้องการ ฉัน <3 homebrew ดังนั้น:

$ brew install git

ทุกชุด?

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

Doh! (รอยขีดข่วนหัว)

$ which git
/usr/bin/git

อ่าคอมไพล์ของ Apple อยู่ใน / usr / bin ดังนั้นมันจึงสำคัญกว่าภาษาฮีบรู จะทำอย่างไร?

(A) เพียงแค่เปลี่ยนชื่อไบนารีของ Apple

(B) ให้ผู้ที่จัดการโดย homebrew มาก่อน:

[แก้ไขเส้นทางการส่งออกเช่นใน ~ / .zshrc (oh-my-zsh + iTerm2 FTW! / tangent)]

[โดยเฉพาะ: ย้าย / usr / local / bin / git: ก่อน / usr / bin:]

... และ / หรือ (เช่นเพื่อให้การติดตั้งระบบโฮมบึ้มสิ่งที่มีความหมายกว้างกว่าและให้ความสำคัญกับเชลล์และผู้ใช้ทั้งหมด) แก้ไขไฟล์ / etc / path เช่นกัน [การย้าย / 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 เกี่ยวข้องกับความคิดเห็นเกี่ยวกับความเสี่ยงของการแก้ไข / usr / bin: IMHO เป็น NBD (ฉันชอบข้อเสนอแนะของ Global Nomad การทำ "sudo ln -s / usr / local / bin / git / usr / bin / git" ... ซึ่งทำให้มั่นใจได้ว่าสิ่งที่เรียกว่า "/ usr / bin / git" จะได้รับอย่างชัดเจน การจัดการชงของคุณ แต่การใช้ของฉันคือการติดตั้ง git แสดงว่าคุณกำลังเป็นเจ้าของ git ในระบบของคุณกังวลเกี่ยวกับกระบวนการที่ไม่รู้จักโดยใช้ git รุ่นเก่าที่เป็นทางเลือกอาจถูกวางผิดที่ฉันขอแนะนำให้รักษาข้อมูลล่าสุดด้วย เวอร์ชัน git (เพื่อความปลอดภัยไม่ใช่แค่คุณสมบัติ) และจัดการด้วยตัวคุณเอง Homebrew ทำให้เป็นเรื่องง่าย /$0.02
cweekly

วิธีนี้ใช้ไม่ได้สำหรับฉันในการเลิกทำเพียงทำ: sudo mv / usr / bin / git-apple / usr / bin / git ความคิดเห็นของ Juan Diego Gonzales ทำงาน (โดยทั่วไปให้ทำตามคำตอบที่ยอมรับแล้วรีสตาร์ทเทอร์มินัล)
Souleiman

แม้จะมีการwhich gitชี้ไป/usr/local/bin/gitแต่ก็ไม่ได้ผลสำหรับฉัน เพื่อแก้ปัญหานี้ฉันต้องถอนการติดตั้งแอพ 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

วันนี้ดูเหมือนว่า homebrew ทำให้ตัวเองที่ "หน้า" ของเส้นทางเพื่อหวังว่าไม่จำเป็น :)
rogerdpack

32

สถานะ 2019

เทคนิคทั้งหมดที่กล่าวถึงที่นี่ในหลายคำตอบนั้นไม่จำเป็นอีกต่อไปสำหรับ macOS Sierra & Mojave ด้วย Homebrew ล่าสุด ลืมและการปรับเปลี่ยนไปexport PATH="..."~/.bash_profile

คุณก็ทำได้

brew install git

และคุณทำ

เพื่อยืนยันให้เปิดหน้าต่างเทอร์มินัล (!) ใหม่และพิมพ์

git --version

16
ฉันคิดว่านี่ถูกต้อง แต่คุณต้องเปิดเทอร์มินัลใหม่หรือการเปลี่ยนแปลงไม่ได้หยิบขึ้นมา
robjwilkins

มันไม่ได้ผลสำหรับฉันอย่างน่าเสียดาย
rsp1984

2
สิ่งนี้ใช้ได้กับฉันในโมฮาวี ฉันไม่ได้มีการเปิดอาคารผู้โดยสารแห่งใหม่
Craig Otis

2
brew link --overwrite gitทำงานให้ฉัน
wickdninja

9

เมื่อคุณติดตั้งคอมไพล์ล่าสุดผ่านทาง Brew ( brew install git) แล้วให้รันหนึ่งซับ (ตามที่แนะนำbrew doctor) หากยังไม่มี:

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

จากนั้นปิด Terminal แล้วเปิดใหม่อีกครั้ง (รีสตาร์ทเซสชัน bash ของคุณ) คุณต้องทำสิ่งนี้แม้ว่า PATH ของคุณจะถูกต้องแล้วเนื่องจาก ZSH และ Bash แคชเนื้อหาของ PATH (ดูเอกสารประกอบของคำสั่งในตัวhash)

ที่ควรแก้ไขสิ่งต่าง ๆ อย่างรวดเร็วจริง ๆ


1
สิ่งนี้แตกต่างจากคำตอบที่ยอมรับได้อย่างไร
user151019

6
ในกรณีของฉันฉันไม่รู้ว่าต้องรีสตาร์ท Terminal ดังนั้นส่วนนั้นอาจช่วยให้บางคน จะเร็วกว่าที่ยอมรับเพราะสายการบินเดียว หากเป็นการแข่งขันฉันคิดว่าคำตอบของฉันหายไป มิฉะนั้นฉันคิดว่ามันมีส่วนช่วย (บอกฉันหากคุณต้องการให้ฉันแก้ไขแทนสิ่งนี้)
Juan Diego Gonzales

คุณทำเช่นนั้นเมื่อคุณติดตั้ง Homebrew
user151019

7
ฉันคิดว่าคำตอบนี้มีประโยชน์ การรีสตาร์ทเครื่องเป็นปัญหาที่ไม่ชัดเจนสำหรับหลาย ๆ คนที่ไม่คุ้นเคยกับการทำงานของ. bash_profile และการเตือนที่นุ่มนวลสำหรับพวกเราที่เหลือ
Magne

@JuanDiegoGonzales สังเกตที่ยอดเยี่ยม! ฉันสงสัยในสิ่งเดียวกันหลังจากติดตั้งคอมไพล์และไม่รู้ว่าทำไม หลังจากคำใบ้ของแคชฉันทำการค้นคว้าเพิ่มเติมอีกเล็กน้อย: unix.stackexchange.com/q/5609/52921
kstratis

4

เมื่อคุณพิมพ์

git --version

ใน Terminal.app หรือคอนโซลความคิดเห็นของคุณสำหรับคำถามอื่นที่ระบุว่าเวอร์ชันที่ส่งคืนคือคอมไพล์ใน / usr / bin / git

หากคุณติดตั้ง Xcode 4.5 (และใหม่กว่า) แล้วพิมพ์

xcrun git --version

ใน Terminal.app หรือคอนโซลรุ่นที่ส่งคืนคือคอมไพล์ในชุดแอป Xcode

หากคุณใช้ Homebrew เพื่อติดตั้งและอัปเดต git ทางออกที่ง่ายที่สุดก็คือ

  1. ตรวจสอบให้แน่ใจว่าคุณมีสิทธิ์ของผู้ดูแลระบบตามที่คุณจะถูกถามถึงรหัสผ่านสำหรับผู้ดูแลระบบ
  2. เปลี่ยนชื่อตำแหน่งเดิมด้วยการเปลี่ยนชื่อโดยใช้ mv ตัวอย่างเช่น

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

  3. สร้างลิงค์นุ่มโดยใช้ 'ln -s' เพื่อไบนารี่ git ที่คุณติดตั้งด้วย Homebrew

โปรดทราบว่า MattDMo มีทางออกที่ดีกว่าในความคิดเห็น


ปลอดภัย 100% หรือไม่ มันจะทำลายสิ่งที่เกี่ยวข้องกับ mac ไหม?
Levani

หากคุณทำตามขั้นตอนที่ระบุไว้วิธีการแก้ปัญหาจะไม่ทำลายสิ่งใด ๆ ที่ติดตั้งไว้ล่วงหน้าเนื่องจากไฟล์ประมวลผล git เหล่านั้นจะไม่ถูกลบ นี่คือสาเหตุที่ในขั้นตอนที่ 2 คุณควรเปลี่ยนชื่อต้นฉบับ / usr / bin / git ของคุณเช่น /usr/bin/git.BACKUP
เร่ร่อนทั่วโลก

10
โปรดอย่าทำเช่นนี้ - คุณไม่ควรสับสน/usr/binเพราะเป็นไปได้ว่าโปรแกรมอื่น ๆ ที่คุณไม่เคยรู้มาก่อนนั้นขึ้นอยู่กับความหลากหลายของเวอร์ชั่นที่เฉพาะเจาะจง ทางออกที่ง่ายที่สุดโดยไม่ต้องย้ายอะไรคือการเพิ่มตัวแปรสภาพแวดล้อม/usr/local/binของคุณ$PATHก่อน/usr/bin- IIRC, homebrew ติดตั้งเพื่อ/usr/local/bin
MattDMo

ขอบคุณ @MattDMo ซึ่งดูเหมือนจะเป็นวิธีที่ดีที่สุดในกรณีนี้
Levani


1

คุณต้องเปลี่ยนชื่อคอมไพล์ดั้งเดิมโดย apple /usr/bin/เพื่อเป็น git-org เพราะ/usr/binปกติแล้วจะ/usr/local/binอยู่ในไดเรกทอรีพา ธ ของคุณ

ดังนั้น:

cd /usr/bin
sudo mv git git-org

และอย่าลืมลิงค์ git ชง

brew link git

นี่ถือว่า/usr/local/binอยู่ใน$PATHตัวแปรสภาพแวดล้อมของคุณ หากคุณยังมีปัญหาลองเรียกใช้

brew doctor 

และแก้ไขปัญหาที่กล่าวถึงที่นั่น


3
ไม่เปลี่ยนชื่อหรือเปลี่ยนสิ่งต่าง ๆ ใน / usr / bin เนื่องจากอาจทำให้ thigs ของ Apple แตกและจะได้รับ chnaged เมื่อคุณทำการอัพเดทระบบหรือ XCode ใช้เส้นทางซึ่งเป็นสิ่งที่มันถูกออกแบบมาสำหรับ
user151019

@ ทำเครื่องหมายว่าคุณมีจุด แต่ฉันไม่เชื่อว่าคุณจะมีปัญหาหากคุณเปลี่ยนเพียงแค่คอมไพล์ใน / usr / bin สำหรับฉันมันใช้งานได้หลายเดือน
Pfitz

ฉันยอมรับว่าปกติการเปลี่ยนแปลงสิ่งต่าง ๆ ใน / usr / bin เป็นข่าวร้าย แต่ฉันจำไม่ได้ว่า OS X ใช้ git ได้จริงดังนั้นอันตรายที่เกิดขึ้นอาจมีขนาดเล็กและเกี่ยวข้องกับระบบ "สะอาด" ที่ตรงกับใบเสร็จรับเงิน ความเสียหายจะเป็นการอัปเดตเป็น OS X อาจแทนที่ git ใหม่ด้วยรุ่นที่เก่ากว่าดังนั้นจึงเป็นวิธีปฏิบัติปกติในการค้นหาไบนารีใหม่นอกตำแหน่งเส้นทางของระบบ
bmike

3
ฉันคิดว่ามันจะง่ายกว่ามากในการเพิ่ม/usr/local/bin(ไดเรกทอรีการติดตั้งของ homebrew, IIRC) ไป$PATHข้างหน้า/usr/binแทนการล้อเล่นไปรอบ ๆ ด้วยการเปลี่ยนชื่อและสำรองข้อมูล ฯลฯ
MattDMo

1

ติดตั้งคอมไพล์ด้วย brew เรียกใช้สิ่งนี้

brew link --force git

which gitปิดและเปิดสถานีเพื่อให้ทำงานได้


1
สิ่งนั้นเปลี่ยนเส้นทางเริ่มต้นอย่างไร
user151019

สิ่งนี้ทำงานให้ฉันเพื่อแทนที่ git ของ xcode
surjikal

ฉันได้รับข้อผิดพลาดเมื่อทำงานนี้ แต่ใช้brew link --overwrite gitงานได้
wickdninja

0

หากคุณกำลังติดตั้ง git จาก git-scm.com โดยตรงและต้องการใช้ git ที่ดาวน์โหลดล่าสุดแทนที่จะเป็น git รุ่น apple (เก่า)

  1. ติดตั้ง git จาก git-scm.com
  2. อาจจะมีการติดตั้งคอมไพล์ใหม่เป็นส่วนใหญ่ /usr/local/bin/git
  3. ลองgit --versionถ้ามันส่งคืน git เวอร์ชันเก่าของ Apple ให้ทำต่อไปด้านล่าง
  4. cd ~ (เปลี่ยนไดเรกทอรีเป็นไดเรกทอรีบ้านของคุณ)
  5. ชนิด vi .bashrc
  6. ใช้i(เพื่อแทรกข้อความในโปรแกรมแก้ไข vi)
  7. หากคุณพบกับบรรทัดexport PATH.......ให้กด Enter ที่ด้านบนของการส่งออกและพิมพ์ต่อไปนี้: export PATH=/usr/local/:$PATH(ให้ความระมัดระวังอย่างมากกับPATHตัวแปรอย่าทำอย่างอื่นมันจะทำให้เกิดปัญหาสำหรับระบบปฏิบัติการของคุณ) (หวังว่าจะติดตั้งคอมไพล์ใหม่/usr/local/git)
  8. กด esc
  9. ป้อน:wq(เพื่อบันทึก.bashrcไฟล์)
  10. ออกจากเทอร์มินัลและเริ่มเทอร์มินัลใหม่
  11. ตอนนี้ลองgit --version(คุณจะเห็นเวอร์ชันใหม่)

-1

ขึ้นอยู่กับว่าคุณมาจากไหน Xcode นำเวอร์ชั่นมาใช้บางทีอาจเป็นเรื่องตรงไปตรงมาในเส้นทางของคุณ

อาจจะพิมพ์

which git

จะแสดงตำแหน่งเดิม


มันอยู่ใน/usr/bin/git...
Levani

2
ที่ดูเหมือนว่าสองการติดตั้ง ฉันคิดว่ารุ่น git ปกติ (ดาวน์โหลดได้) ไปที่ / usr / local / git / ... จากนั้นก็เป็นคำถามของการเพิ่มเข้าไปในเส้นทางหรือลบส่วนอื่น (หรือทั้งสองอย่าง)
Nicholaz

-2

ในการอัปเกรดสิ่งใดก็ตามโดยใช้ Homebrew บน OSX ซึ่งเกี่ยวข้องกับการรวบรวมโดยใช้ gcc ตรวจสอบให้แน่ใจว่าคุณมีเครื่องมือบรรทัดคำสั่งที่อัปเดตจาก Xcode ใช่แล้วฉันรู้ดีว่ามันต้องซ่อนเครื่องมือทั้งระบบไว้ในการตั้งค่าของแอป

ขั้นตอน

  1. ไปที่ Xcode.app -> การตั้งค่า -> ดาวน์โหลด
  2. อัปเดต (หรือติดตั้ง) เครื่องมือบรรทัดคำสั่ง
  3. เรียกใช้brew doctorและแก้ไขอุปสรรคอื่น ๆ ทั้งหมด
  4. วิ่งbrew upgradeเพื่ออัพเกรดแพ็คเกจทั้งหมดในครั้งเดียว
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.