จะเพิ่มคำสั่งเพิ่มเติมใน Git Bash ได้อย่างไร


63

ฉันกำลังทำงานกับเครื่อง windows และฉันใช้ bash shell ซึ่งมาพร้อมกับ Git แต่มียูทิลิตี้มากมายที่หายไปในเชลล์ bash เวอร์ชันนี้

ฉันจะติดตั้งคำสั่งเพิ่มเติมบนเชลล์นี้ได้อย่างไร?


3
คุณลองทำอะไร
030

3
many utilities are missing in this version of bash shell. โปรดเพิ่มคำสั่งที่คุณต้องการใช้
030

3
ดูserverfault.com/a/872557/212162สำหรับวิธีการที่เร็วกว่าและง่ายกว่ามากในการใช้ยูทิลิตี้ที่ไม่ได้รวมอยู่ในค่าเริ่มต้น
nextgentech

คำตอบ:


16

มีสองรุ่นของ Git ที่คุณมีแนวโน้มที่จะใช้เป็น - The msysgitแจกจ่ายหรือCygwin

การติดตั้งโปรแกรมอรรถประโยชน์เพิ่มเติมสำหรับ Cygwin

แม้ว่าคุณอาจติดตั้ง Git เป็นส่วนหนึ่งของการติดตั้ง Cygwin เท่านั้น (ถ้าคุณใช้ Cygwin) Cygwin มีโปรแกรมที่ชื่อว่าsetup.exeซึ่งคุณสามารถใช้เพื่อเพิ่มแพ็คเกจได้ โดยพื้นฐานแล้วสิ่งที่คุณต้องทำก็คือเรียกใช้setup.exeและเลือกโปรแกรมที่คุณต้องการติดตั้งเมื่อไปถึงหน้าต่างเลือกแพ็คเกจ บทนำที่นี่ให้ภาพรวมที่ดีกับภาพที่ให้รายละเอียดเกี่ยวกับกระบวนการ

โปรแกรมติดตั้งของ Cygwin นั้นฉลาดพอที่จะเข้าใจได้ว่าคุณมีการติดตั้งที่มีมาก่อนและมันจะเพิ่มแพ็คเกจลงในการติดตั้งของคุณ

MSYS

Git รุ่นอื่นที่คุณอาจใช้ (ถ้าไม่ใช่ Cygwin) คือ msysgit เนื่องจาก msysgit ติดตั้งสภาพแวดล้อม Unix ที่น้อยที่สุดซึ่งไม่เข้ากันได้กับ MinGW จริงๆคุณจะต้องติดตั้งชุด MinGW ข้าง msysgit หน้าเริ่มต้นใช้งาน MinGW ให้ภาพรวมโดยละเอียดเกี่ยวกับวิธีการติดตั้ง MinGW - เนื่องจากฉันไม่มีประสบการณ์กับ MinGW เป็นการส่วนตัวสิ่งที่ฉันทำได้คืออ้างอิงคำแนะนำของพวกเขา

จากนั้นคุณจะต้องโยกย้ายการติดตั้ง msysgit ของคุณไปยัง MinGW สิ่งนี้สามารถทำได้โดยการทำดังต่อไปนี้ (นำมาจากที่นี่ ) หลังจากทำตามลำดับต่อไปนี้ MinGW ควรค้นหาการติดตั้ง Git ของคุณ

cd GITDIR # Where GITDIR is wherever inside Program Files you put Git
cp bin/git* /MINGW/bin # Where MINGW is wherever you put MinGW
cp -r libexec/git* /MINGW/libexec
cp -r share/git* /MINGW/share

2
สำหรับทุกคนที่สงสัยว่าอย่าพยายามใช้ตัวติดตั้ง cygwin บนแพ็คเกจ msysgit มันใช้งานได้บางส่วน ... แต่ในขณะที่การแก้ไขการพึ่งพามันจะแทนที่ sh.exe (ซึ่งเปลี่ยนสภาพแวดล้อมของคุณอย่างมีนัยสำคัญ)
Chris Betti

5
ฉันจะรู้ได้อย่างไรว่า git-bash ของฉันใช้ cygwin หรือ msys?
lmo

7
ฉันติดตั้งจากgit-scm.com/download/winนั่นคือ msysgit หรือ cygwin หรือไม่ แก้ไขคิดออก แทนที่จะลบความคิดเห็นนี้ฉันจะบอกว่ามันเป็น msysgit
การชดเชย จำกัด

3
@LimitedAtonement - โปรดบอกว่าคุณคิดยังไงกับผู้อ่านคนอื่น ๆ (เช่นตัวฉัน) ที่ถามตัวเองด้วยคำถามเดียวกัน
Ioanna

4
คุณสามารถบอกได้ว่าคุณได้ติดตั้งอะไรบ้างโดยใช้งานuname -oในเครื่อง bash
Cliff Armstrong

5

ด้วยการติดตั้งGit สำหรับ Windowsล่าสุดการติดตั้งเชลล์สคริปต์และโปรแกรมเพิ่มเติมนั้นค่อนข้างง่าย

ผมขอแนะนำให้ติดตั้งคอมไพล์โดยใช้chocolatey choco install gitเพราะคุณสามารถอัปเดตคอมไพล์ (และเครื่องมืออื่น ๆ ทั้งหมดที่ติดตั้งกับ chocolatey) choco upgrade allโดยการดำเนินการ

เพียงแค่ใส่ไฟล์ปฏิบัติการลงในC:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin)

ตัวอย่างสำหรับgit-fresh

คัดลอกไฟล์คอมไพล์สดC:\Program Files\Git\usr\binไป

ตัวอย่างสำหรับadr-tools

  1. ดาวน์โหลดแพ็คเกจซิปจากหน้าเผยแพร่
  2. เปิดเครื่องรูดแพ็คเกจ
  3. คัดลอกทุกสิ่งจากsrc/ลงในC:\Program Files\Git\usr\bin

4

หากคุณใช้ msysgit ตัวเลือกง่ายๆคือเพียงติดตั้งMinGWแล้วเพิ่มเส้นทาง MINGW ไปยังไฟล์. bashrc ที่คุณใช้สำหรับการติดตั้ง Git ของคุณ:

    PATH=$PATH:/MINGW/msys/1.0/bin

... โดยที่ MINGW เป็นที่ที่คุณติดตั้ง MinGW

ด้วยวิธีนี้คุณสามารถใช้เครื่องมือ MinGW ได้โดยตรงจากการติดตั้ง Git bash และหากคุณต้องการเครื่องมือทุบตีอีกอันคุณสามารถติดตั้งลงใน MinGW ได้


1

คุณสามารถดาวน์โหลดหน่วย Unix เพิ่มเติมได้Wget, Hugo, Xpdf, make, Nanoจากที่นี่: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

wget

  • ดาวน์โหลดไบนารี wget ล่าสุดสำหรับ windows จากeternallybored (สามารถใช้เป็น zip พร้อมเอกสารประกอบหรือเป็น exe)
  • หากคุณดาวน์โหลด zip ให้แตกไฟล์ทั้งหมด (หากยูทิลิตี windows built-in zip แสดงข้อผิดพลาดให้ใช้7-zip )
  • เปลี่ยนชื่อไฟล์wget64.exeเป็นwget.exeหากจำเป็น
  • ย้ายไปของคุณwget.exeGit\mingw64\bin\

หมายเหตุ: ฉันสังเกตเห็นข้อบกพร่องบางอย่างเมื่อใช้ Wget บน Git Bash เพื่อสร้างไฟล์ WARC สำหรับการใช้ Wget ที่ซับซ้อนยิ่งขึ้นให้พิจารณาCygwinแทน

ฮิวโก้

ตัวสร้างไซต์แบบคงที่ของHugoสามารถดาวน์โหลดเป็นแบบไบนารีและไม่มีตัวติดตั้ง วางมันลงในbinเพิ่มอย่างง่ายดายไปยังเส้นทาง Git Bash ของคุณ คว้า Windows รุ่น 64 บิตจากหน้าเผยแพร่ เปิดเครื่องรูดดาวน์โหลดแล้วคัดลอกhugo.exeลงในGit\mingw64\binไดเรกทอรีของคุณ

xpdf

Xpdfเป็นเครื่องมือที่มีประโยชน์สำหรับจัดการไฟล์ PDF

  • ดาวน์โหลดWindows รุ่น "เครื่องมือ xpdf"
  • แยกไฟล์ zip
  • คัดลอกเนื้อหาของเข้าของคุณxpdf-tools-win-4.00\bin64\Git\mingw64\bin\
  • ตรวจสอบเอกสารการเริ่มต้นด้วยเครื่องมือเช่นและpdftotextpdftopng

ทำ

  • ไปที่ezwinports
  • ดาวน์โหลดmake-4.1-2-without-guile-w32-bin.zip(รับรุ่นที่ไม่มีอุบาย)
  • แยกไฟล์ zip
  • คัดลอกเนื้อหาไปยังGit\mingw64\การรวมโฟลเดอร์ของคุณแต่อย่าเขียนทับ / แทนที่ไฟล์ใด ๆ ที่มีอยู่

นาโน

ตั้งแต่ปี 2018 Git Bash รุ่นล่าสุดมี Nano จึงไม่จำเป็นต้องใช้!

  • ดาวน์โหลด Nano binary จากหน้าสนับสนุนนาโนwin32 คุณเพียงแค่ต้องการ.exeไฟล์ซึ่งมีชื่อว่าnano-git-0d9a7347243.exe(ตามที่เขียนนี้)
  • เปลี่ยนชื่อไฟล์เป็นnano.exeและคัดลอกไปยังmingw64\binไดเรกทอรี
  • รุ่นนาโนนี้จะไม่ทำงานกับ Git ทุบตีคนเดียว แต่สามารถเรียกใช้ตัวอย่างเช่นwinptywinpty nano test.txt

1

rsyncผมพบคำตอบง่ายๆสวยในวันนี้ว่าทำงานให้กับ

  1. ติดตั้ง git bash สำหรับ Windows
  2. ดาวน์โหลดrsyncจากfutureware.at *
  3. แยกไปที่ใดก็ได้ฉันเลือก C:\rsync-3.1.2-2-x86_64.pkg
  4. เพิ่มโฟลเดอร์binไปที่ด้านบนของพา ธ ระบบของคุณ

* ฉันไม่ทราบว่าใครอยู่เบื้องหลัง futureware.at ฉันต้องการลิงก์ไปยังแหล่งข้อมูลหลักเพิ่มเติม


@ ไมค์คำตอบของคุณคล้ายกันยกเว้นว่าฉันไม่ได้ติดตั้ง cygwin64
geneorama

1

ฉันลองต่อไปนี้และติดตั้ง emacs เพื่อ git-bash .. 1. ติดตั้ง msys2 ที่ไหนสักแห่ง (ไม่จำเป็นต้องเป็นคอมพิวเตอร์เครื่องเดียวกัน) 2. ใน msys2 ให้เรียกใช้สิ่งต่อไปนี้:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. คัดลอกemacs.tar.gzไปยังตำแหน่งที่คุณสามารถเข้าถึงได้จาก git-bash จากนั้นภายใต้ git-bash:

    tar zxf emacs.tar.gz -C / emacs

นั่นคือทั้งหมดที่โชคดี

หลังจากโพสต์แรกฉันลองคอมพิวเตอร์เครื่องอื่น แต่ไม่ทำงาน ปรากฎว่ากำลังบางส่วนหายไปใน git-bash จากนั้นฉันทดสอบในเครื่องเสมือนที่สะอาดด้วยขั้นตอนต่อไปนี้:

  1. ติดตั้งmsys2-x86_64-20180531และGit-2.19.1-64 บิต

  2. อัปเดต msys2, เปิดคอนโซล msys64 และเรียกใช้:

    pacman -Syyu
    

    ปิดคอนโซล msys64 เมื่อได้รับแจ้งจากนั้นเรียกใช้คำสั่งด้านบนอีกครั้ง

  3. รับไฟล์ emacs ตามขั้นตอนก่อนหน้า (เรียกใช้สิ่งต่อไปนี้ใน msys64):

    cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
    mv emacs.tar.gz /c/tmp
    

    ps: ฉันเคยลองขั้นตอนข้างต้นใน / d / tmp แทน / tmp และไม่สามารถติดตั้ง emacs ได้

  4. เปิด git-bash และแตกไฟล์ emacs:

    cd /c/tmp
    tar zxf emacs.tar.gz -C /
    

    มันจะบ่นว่าหายไปในห้องสมุดสาธารณะ "?" ที่พยายามเรียกใช้ emacs ตอนนี้ "" จะไม่เปิดเผยต่อผู้อ่านคนใด

  5. กลับไปที่ msys64 และรับไฟล์ msys2:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. ใน git-bash เปรียบเทียบที่กำลังกับ msys:

    cd /c/tmp
    git init
    git add 1.txt && git commit
    ls --color=never /bin/*.dll | sed 's#\*$##g' > /c/tmp/1.txt
    git diff 1.txt | grep '^-' | sed '1d' | sed 's#^-/bin/##g' > diff_dlls.txt
    

    ในกรณีของฉันมี 26 Dll ใน diff_dlls.txt

  7. คัดลอก DLLs จาก msys64 ไปยัง git-bash:

    ใน msys64:

    mkdir /c/tmp/dlls
    cat /c/tmp/diff_dlls.txt | xargs -I {} cp /bin/{} /c/tmp/dlls
    

    ในคอมไพล์ bash:

    cp /c/tmp/dlls/* /bin
    
  8. เสร็จแล้วตอนนี้ emacs ทำงานใน git-bash Dll 26 ตัวบางตัวอาจไม่จำเป็น แต่ฉันต้องการประหยัดเวลาของฉันแทนที่จะใช้พื้นที่ดิสก์


0

หากใช้ Git bash สำหรับ Windows (MinGW64) ฉันมีเวลาที่ยากมากในการเพิ่ม rsync ให้กับมัน ได้รับข้อผิดพลาด: dup () เข้า / ออก / ผิดพลาดล้มเหลว

ในที่สุดการใช้ Cygwin จะทำงานแทน

ขั้นตอนที่ฉันทำเพื่อใช้ rysnc ใน Gitbash สำหรับ Windows

  1. ติดตั้ง gitbash สำหรับ windows
  2. ติดตั้ง cygwin64
  3. เพิ่มเส้นทาง cygwin ไปยังตัวแปรเส้นทาง Windows

    Windows-> ระบบ -> ขั้นสูง Setings-> ตัวแปรสภาพแวดล้อม

    เพิ่มเส้นทางสำหรับ C: \ cygwin64 \ bin \

  4. ปิดและเปิด gitbash ใหม่ตอนนี้ gitbash จะค้นหา rsync.exe ใน cygwin \ bin
  5. ฉันได้รับข้อผิดพลาดเกี่ยวกับรุ่นที่เข้ากันไม่ได้สำหรับ cygwin1.dll

    *** ข้อผิดพลาดร้ายแรง - ตรวจพบฐานข้อมูลไม่ตรงกันในไซเบอร์

  6. แม้ว่าบางคนกล่าวว่าการรีบูตจะแก้ไขปัญหานี้ แต่ก็ไม่ได้
  7. เพื่อแก้ไขข้อผิดพลาดเกี่ยวกับรุ่นฉันได้คัดลอกไดเรกทอรี cygwin \ bin จากรุ่นเก่ากว่าของ cygwin - รุ่น 1.7.30

อย่าทำอย่างนี้ ดูที่การใช้งาน cygwin ใน git bash scriptเพราะเหตุใด
MikeJRamsey56

0

หนึ่งสามารถขยายจำนวนของคุณสมบัติใน git-bash โดยการสร้างสคริปต์และเรียกพวกเขาโดยกำหนดไว้ใน~/.bash_profileไฟล์

ตัวอย่าง

หากต้องการใช้watchคำสั่งสามารถเพิ่มสคริปต์นี้ใน~/.bash_profile:

https://gist.github.com/espaciomore/28e24ce4f91177c0964f4f67bb5c5fda

ARGS="${@}"
clear;
while(true); do
  OUTPUT=`$ARGS`
  clear
  echo -e "${OUTPUT[@]}"
done

และห่อไว้ภายในฟังก์ชั่น:

watch() {
  ARGS="${@}"
  clear;
  while(true); do
    OUTPUT=`$ARGS`
    clear
    echo -e "${OUTPUT[@]}"
  done
}

ทันทีที่มีการบันทึกไฟล์และเรียกใช้source ~/.bash_profileจากนั้นหนึ่งจะสามารถดูผลลัพธ์ของคำสั่ง


0

ติดตั้ง "Git สำหรับ Windows SDK" (เลื่อนไปที่ด้านล่างของhttps://gitforwindows.org/ซึ่งมีลิงก์สำหรับดาวน์โหลดตัวติดตั้งสำหรับมันจากhttps://github.com/git-for-windows/build-extra/releases / ล่าสุด )

https://stackoverflow.com/questions/32712133/package-management-in-git-for-windows/52105321#52105321


-1

เพื่อเพิ่ม rsync

คุณสามารถดาวน์โหลดไฟล์ rsync โดยตรงจากmysys เพียงค้นหาหน้า rsync และเลือกอันที่มีหมายเลขวันที่ / เวอร์ชั่นล่าสุดล่าสุด
คลายไฟล์นี้ ( rsync-3.1.3-1-x86_64.pkg.tar.xz) ผ่านทาง

tar -xf rsync-3.1.3-1-x86_64.pkg.tar.xz

จากนั้นคัดลอก rsync ที่./usr/bin/rsync.exe และวางลงในโฟลเดอร์ / usr / bin ของการติดตั้ง Git ของคุณ
บนเครื่องของฉันนั่นคือC:/Program Files/Git/usr/bin/

คุณสามารถดูตำแหน่งของการติดตั้ง Git ของคุณผ่าน

where git

นี่คือส่วนสำคัญ repo โดย hisplan ที่มีคำแนะนำพร้อมกับเชื่อมโยงไปยังรุ่น 3.1.3-1 บน rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6

หมายเหตุ: ฉันไม่สามารถแยกrsync-3.1.3-1-x86_64.pkg.tar.xzไฟล์ลงในโฟลเดอร์ Git ได้โดยตรงเนื่องจากการอนุญาตไม่อนุญาต และ Git Bash ไม่มี sudo
แต่ฉันสามารถแกะกล่องลงในโฟลเดอร์ดาวน์โหลดได้โดยตรงไม่มีปัญหา
มันก็เป็นเช่นกันเพราะคุณต้องการเพียงrsync.exeไฟล์ต่อไป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.