Làm thế nào để thêm nhiều lệnh hơn vào Git Bash?


63

Tôi đang làm việc trên máy windows và tôi sử dụng bash shell đi kèm với Git. Nhưng có nhiều tiện ích bị thiếu trong phiên bản bash shell này.

Làm thế nào tôi có thể cài đặt thêm các lệnh trên shell này?


3
Bạn đã thử gì?
030

3
many utilities are missing in this version of bash shell. Vui lòng thêm những lệnh còn thiếu mà bạn muốn sử dụng.
030

3
Xem serverfault.com/a/872557/212162 để biết cách sử dụng các tiện ích gần đây và dễ dàng hơn nhiều mà không được bao gồm theo mặc định.
nextgentech

Câu trả lời:


16

Có hai phiên bản Git mà bạn có thể đang sử dụng - bản phân phối msysgit hoặc Cygwin .

Cài đặt các tiện ích bổ sung cho Cygwin

Mặc dù bạn có thể chỉ cài đặt Git như một phần của cài đặt Cygwin (nếu bạn đã sử dụng Cygwin), Cygwin có một chương trình có tên là setup.exe mà bạn có thể sử dụng để thêm các gói. Về cơ bản, tất cả những gì bạn phải làm là chạy setup.exevà chọn ra những chương trình bạn muốn cài đặt khi bạn vào cửa sổ Chọn Gói . Giới thiệu ở đây cung cấp một cái nhìn tổng quan tốt với hình ảnh chi tiết quá trình.

Trình cài đặt của Cygwin đủ thông minh để nhận ra rằng bạn có bản cài đặt có sẵn và nó sẽ thêm các gói vào bản cài đặt của bạn (thay vì gỡ bỏ nó và bắt đầu lại).

MSYS

Phiên bản Git khác mà bạn có thể đang sử dụng (nếu không phải là Cygwin) là msysgit. Vì msysgit cài đặt một môi trường Unix tối thiểu không thực sự tương thích với MinGW, nên cuối cùng bạn sẽ phải cài đặt bộ MinGW bên cạnh msysgit. Trang Bắt đầu MinGW cung cấp một cái nhìn tổng quan chi tiết về cách cài đặt MinGW - vì tôi không có kinh nghiệm với cá nhân MinGW, tất cả những gì tôi thực sự có thể làm là giới thiệu cho bạn các hướng dẫn của họ.

Sau đó, bạn sẽ phải di chuyển cài đặt msysgit của mình vào MinGW. Điều này có thể được thực hiện bằng cách làm như sau (lấy từ đây ). Sau khi hoàn thành trình tự sau, MinGW sẽ tìm thấy bản cài đặt Git của bạn.

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
Đối với bất kỳ ai thắc mắc, đừng cố sử dụng trình cài đặt cygwin trên gói msysgit. Nó hoạt động một phần ... nhưng trong khi giải quyết các phụ thuộc, nó sẽ thay thế sh.exe (thay đổi đáng kể môi trường của bạn).
Chris Betti

5
Làm thế nào để tôi biết nếu git-bash của tôi sử dụng cygwin hoặc msys?
LMO

7
Tôi đã cài đặt từ git-scm.com/doad/win là msysgit hay cygwin? EDIT đã tìm ra nó. Thay vì xóa bình luận này, tôi sẽ nói rằng đó là msysgit.
Chuộc tội có giới hạn

3
@LrictAtonement - Xin vui lòng cho biết cách bạn tìm ra nó, cho những độc giả khác (như bản thân tôi), những người đã tự hỏi mình câu hỏi tương tự.
Ioanna

4
Bạn có thể cho biết những gì bạn đã cài đặt bằng cách chạy uname -otrong thiết bị đầu cuối bash.
Cliff Armstrong

5

Với các cài đặt Git cho Windows gần đây , việc cài đặt các chương trình và chương trình shell bổ sung là khá dễ dàng.

Tôi khuyên bạn nên cài đặt git bằng chocolatey choco install git , bởi vì bạn có thể cập nhật git (và tất cả các công cụ khác được cài đặt với chocolatey) bằng cách thực hiện choco upgrade all.

Đơn giản chỉ cần đặt các tệp thực thi vào C:\Program Files\Git\usr\bin( %ProgramFiles%\Git\usr\bin).

Ví dụ cho git-tươi

Sao chép tập tin git-tươi vào C:\Program Files\Git\usr\bin.

Ví dụ cho công cụ adr

  1. Tải xuống gói zip từ trang phát hành
  2. Giải nén gói
  3. Sao chép mọi thứ từ src/vàoC:\Program Files\Git\usr\bin

4

Nếu bạn đang sử dụng msysgit, một tùy chọn đơn giản là chỉ cần cài đặt MinGW và sau đó thêm đường dẫn MINGW vào tệp .bashrc mà bạn đang sử dụng để cài đặt Git:

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

... nơi MINGW là nơi bạn đã cài đặt MinGW

Bằng cách đó, bạn có thể sử dụng các công cụ MinGW trực tiếp từ cài đặt bash Git của mình và nếu bạn cần một công cụ bash khác, bạn có thể chỉ cần cài đặt nó vào MinGW.


1

Bạn có thể tải xuống các đơn vị Unix bổ sung Wget, Hugo, Xpdf, make, Nanotừ đây: https://gist.github.com/evanwill/0207876c3243bbb6863e65ec5dc3f058

Quên

  • Tải xuống bản nhị phân wget mới nhất cho các cửa sổ từ vĩnh viễn (chúng có sẵn dưới dạng zip với tài liệu hoặc chỉ là một exe)
  • Nếu bạn đã tải xuống zip, hãy giải nén tất cả (nếu các cửa sổ tích hợp trong tiện ích zip bị lỗi, hãy sử dụng 7-zip ).
  • Đổi tên tập tin wget64.exethành wget.execần thiết.
  • Di chuyển wget.exeđến của bạn Git\mingw64\bin\.

Lưu ý: Tôi đã nhận thấy một số lỗi khi sử dụng Wget trên Git Bash để tạo tệp WARC. Để sử dụng Wget phức tạp hơn, hãy xem xét Cygwin thay thế.

Hugo

Trình tạo trang tĩnh Hugo có thể được tải xuống dưới dạng nhị phân và không có trình cài đặt. Thả nó vào bindễ dàng thêm nó vào đường dẫn Git Bash của bạn. Lấy phiên bản Windows 64 bit từ trang phát hành . Giải nén tải xuống, sau đó sao chép hugo.exevào Git\mingw64\binthư mục của bạn .

Xpdf

Xpdf là một tiện ích tiện dụng để thao tác các tệp PDF.

  • Tải xuống phiên bản windows "công cụ Xpdf" .
  • Trích xuất zip.
  • Sao chép nội dung của xpdf-tools-win-4.00\bin64\bạn vào Git\mingw64\bin\.
  • Kiểm tra tài liệu để bắt đầu với các công cụ như pdftotextpdftopng.

làm

  • Tới ezwinports .
  • Tải về make-4.1-2-without-guile-w32-bin.zip(lấy phiên bản không có guile).
  • Trích xuất zip.
  • Sao chép nội dung để Git\mingw64\hợp nhất các thư mục của bạn , nhưng KHÔNG ghi đè / thay thế bất kỳ tệp nào hiện có.

Nano

Kể từ năm 2018, các phiên bản gần đây của Git Bash bao gồm Nano, vì vậy điều này là không cần thiết!

  • Tải xuống nhị phân Nano từ trang hỗ trợ Nano win32 . Bạn chỉ cần các .exetập tin, được đặt tên nano-git-0d9a7347243.exe(như văn bản này).
  • Đổi tên tập tin thành nano.exe, và sao chép vào mingw64\binthư mục.
  • Phiên bản Nano này sẽ không hoạt động với Git Bash một mình, nhưng có thể được gọi bằng cách sử dụng winpty, ví dụ , winpty nano test.txt.

1

Tôi tìm thấy một câu trả lời khá đơn giản ngày hôm nay mà làm việc cho rsync.

  1. Cài đặt git bash cho Windows
  2. Tải xuống rsynctừ futurware.at *
  3. Trích xuất đến mọi nơi, tôi chọn C:\rsync-3.1.2-2-x86_64.pkg
  4. Thêm thư mục bin vào đầu đường dẫn hệ thống của bạn

* Tôi không biết ai đứng sau futurware.at, tôi muốn liên kết với một nguồn chính hơn.


@ giống như câu trả lời của bạn tương tự, ngoại trừ việc tôi không cài đặt cygwin64
genorama

1

Tôi đã thử các cách sau và cài đặt emacs vào git-bash .. 1. Cài đặt msys2 ở đâu đó (không phải là cùng một máy tính). 2. Trong msys2, chạy như sau:

   cd /tmp
    mkdir -p var/lib
    cp -R /var/lib/pacman var/lib/
    pacman -Sr /tmp emacs
    tar zcf emacs.tar.gz usr
  1. Sao chép emacs.tar.gzvào nơi bạn có thể truy cập từ git-bash, sau đó dưới git-bash:

    tar zxf emacs.tar.gz -C / emacs

Đó là tất cả, chúc may mắn.

Sau bài đăng đầu tiên, tôi đã thử một máy tính khác nhưng không hoạt động. Nó chỉ ra rằng một số dll bị thiếu trong git-bash. Sau đó, tôi đã thử nghiệm trong một máy ảo sạch với các bước sau:

  1. Cài đặt msys2-x86_64-20180531Git-2.19.1-64-bit .

  2. Cập nhật msys2, mở bảng điều khiển msys64 và chạy:

    pacman -Syyu
    

    Đóng bàn điều khiển msys64 khi được nhắc, sau đó chạy lại lệnh trên.

  3. Nhận các tệp emacs như các bước trước (chạy sau trong 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: Tôi đã từng thử các bước trên trong / d / tmp thay vì / tmp và không thể cài đặt emacs cho nó.

  4. Mở git-bash và giải nén tập tin emacs:

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

    Nó sẽ phàn nàn thiếu thư viện chia sẻ "?" cố gắng chạy emacs bây giờ. Các "?" sẽ không tiết lộ cho bất kỳ ai có thể đọc được

  5. Quay trở lại msys64 và nhận các msll2 của dlls:

    ls --color=never /bin/*.dll > /c/tmp/1.txt
    
  6. Trong git-bash so sánh dlls với 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
    

    Trong trường hợp của tôi, có 26 dll trong diff_dlls.txt.

  7. Sao chép các dll từ msys64 sang git-bash:

    Trong msys64:

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

    Trong git-bash:

    cp /c/tmp/dlls/* /bin
    
  8. Tất cả đã xong, bây giờ emacs chạy trong git-bash. Một số trong 26 dll có thể không cần thiết, nhưng tôi muốn tiết kiệm thời gian của mình thay vì dung lượng đĩa.


0

Nếu sử dụng Git bash cho Windows (MinGW64), tôi đã rất khó khăn để thêm rsync vào nó. tiếp tục gặp lỗi: dup () vào / ra / lỗi không thành công

Thay vào đó, sử dụng Cygwin cuối cùng đã làm việc.

Các bước tôi đã thực hiện để sử dụng rysnc trong Gitbash cho Windows

  1. Cài đặt gitbash cho windows
  2. Cài đặt cygwin64
  3. Thêm đường dẫn cygwin vào biến đường dẫn Windows

    Windows-> Hệ thống-> Cài đặt nâng cao-> Biến môi trường

    Thêm đường dẫn cho C: \ cygwin64 \ bin \

  4. Đóng và mở lại gitbash Bây giờ gitbash sẽ tìm thấy rsync.exe trong cygwin \ bin
  5. Tôi đã nhận được một lỗi phiên bản không tương thích cho cygwin1.dll

    *** lỗi nghiêm trọng - phát hiện sự không phù hợp cơ sở cygheap

  6. Mặc dù một số người nói rằng khởi động lại sẽ khắc phục điều này, nhưng nó đã không làm được.
  7. Để khắc phục lỗi phiên bản, tôi đã sao chép thư mục cygwin \ bin từ phiên bản cũ hơn của cygwin - phiên bản 1.7.30 hoạt động

Đừng làm điều này. Xem Sử dụng cygwin thực thi trong tập lệnh git bash để biết lý do.
MikeJRamsey56

0

Người ta có thể mở rộng số lượng tính năng trong git-bash bằng cách tạo tập lệnh và gọi chúng bằng cách xác định chúng trong ~/.bash_profiletệp.

Thí dụ

Nếu ai đó muốn sử dụng watchlệnh, thì đoạn script này có thể được thêm vào ~/.bash_profile:

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

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

và bọc nó bên trong một chức năng:

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

Ngay khi một người lưu tệp và chạy source ~/.bash_profilethì người ta sẽ có thể xem đầu ra của các lệnh.



-1

thêm rsync

Bạn có thể tải xuống tệp rsync trực tiếp từ mysys . Chỉ cần tìm kiếm trang cho rsync và chọn một trang có số ngày / phiên bản mới nhất mới nhất.
Giải nén tệp này ( rsync-3.1.3-1-x86_64.pkg.tar.xz) qua

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

Sau đó sao chép rsync tại ./usr/bin/rsync.exe và dán nó vào thư mục / usr / bin của bản cài đặt Git của bạn.
Trên máy của tôi, đó làC:/Program Files/Git/usr/bin/

Bạn có thể xem vị trí cài đặt Git của bạn thông qua

where git

Đây là bản repo chính của anh ấy có hướng dẫn cùng với liên kết đến phiên bản 3.1.3-1 trên rsync https://gist.github.com/hisplan/ee54e48f17b92c6609ac16f83073dde6 .

Lưu ý: Tôi không thể giải nén rsync-3.1.3-1-x86_64.pkg.tar.xztệp trực tiếp vào thư mục Git, vì quyền không cho phép. Và Git Bash không có sudo.
Nhưng tôi có thể giải nén nó trực tiếp vào thư mục Tải xuống của mình.
Cũng tốt thôi, vì rsync.exedù sao bạn cũng chỉ cần tập tin.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.