Làm thế nào để cấu hình hoàn thành dòng lệnh git bash?


131

Ví dụ: trên một máy ubuntu mới, tôi vừa chạy sudo apt-get gitvà không có hoàn thành khi nhập ví dụ git check[tab].

Tôi không tìm thấy bất cứ thứ gì trên http://git-scm.com/docs , nhưng việc hoàn thành IIRC được bao gồm trong gói git những ngày này và tôi chỉ cần mục nhập phù hợp trong bashrc của mình.


Làm việc cho tôi ngay lập tức trên Ubuntu Precise (và Fedora 17).
Ốc cơ,

2
Để kiểm tra xem bạn có nó theo mặc định hay không, bạn có thể chạy (cd ~ && exec cat .bashrc | grep completion).
aderchox

Câu trả lời:


182

Trên Linux

trên hầu hết các bản phân phối, tập lệnh hoàn thành git được cài đặt vào /etc/bash_completion.d/(hoặc /usr/share/bash-completion/completions/git) khi bạn cài đặt git, không cần phải truy cập github. Bạn chỉ cần sử dụng nó - thêm dòng này vào .bashrc:

source /etc/bash_completion.d/git
# or
source /usr/share/bash-completion/completions/git

Trong một số phiên bản của Ubuntu, tính năng tự động hoàn thành git có thể bị hỏng theo mặc định, việc cài đặt lại bằng cách chạy lệnh này sẽ khắc phục được sự cố:

sudo apt-get install git-core bash-completion

Trên Mac

Bạn có thể cài đặt hoàn tất git bằng Homebrew hoặc MacPorts.

Homebrew

if $BASH_VERSION> 4: brew install bash-completion@2(phiên bản cập nhật) Hãy đặc biệt quan tâm đến phiên bản bash mà bạn có vì MacOS mặc định được gửi với 3.2.57 (1) -release.

thêm vào .bash_profile:

  if [ -f /usr/local/share/bash-completion/bash_completion ]; then
    . /usr/local/share/bash-completion/bash_completion
  fi

Đối với các phiên bản bash cũ hơn: brew install bash-completion

thêm vào .bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

MacPorts

sudo port install git +bash_completion

sau đó thêm cái này vào .bash_profile:

if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
fi

thêm thông tin trong hướng dẫn này: Hoàn thành cài đặt Bash git

Lưu ý rằng trong mọi trường hợp, bạn cần tạo một trình bao mới (mở tab / cửa sổ đầu cuối mới) để các thay đổi có hiệu lực.


1
Hầu hết các hộp * nix (đặc biệt là Ubuntu) đã có tệp đó, vì vậy chỉ cần cung cấp nó cho người dùng của tôi đã khắc phục được sự cố của tôi. Cảm ơn.
nevvermind

5
ubuntu có thể có nó như /etc/bash_completion.d/git-prompt
Catskul

2
Tôi có Git nhưng không /etc/bash_completion.d
sixty4bit

14
Trong Ubuntu 14.04 của tôi tệp này là /usr/share/bash-completion/completions/git. /etc/bash_completion.d/git-promptđược sử dụng để hỗ trợ git nhắc, không phải để hoàn thành.
Ray Chen

18
CẢNH BÁO: Phương pháp homebrew của Mac chỉ hoạt động nếu bạn đã cài đặt git thông qua homebrew, brew uninstall bash-completionsau đó brew install gitnếu bạn đã cài đặt git thông qua một số phương pháp khác trước đó, thì các bước trên sẽ hoạt động.
patapouf_ai 21/10/16

66

tôi đã gặp vấn đề tương tự, hãy làm theo các bước sau:

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

sau đó thêm các dòng sau vào của bạn .bash_profile(thường trong thư mục chính của bạn)

if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
fi

nguồn: http://code-worrier.com/blog/autocomplete-git/


Tôi đứng sau một proxy vì vậy tôi phải đặt proxy trước để curl hoạt động. export https_proxy=proxy_ip:proxy_portTôi thực sự không hiểu tại sao nó không nhận được cài đặt từ hệ thống.
madlymad

2
nó không thực sự cần thiết để ẩn tệp đó bằng một dấu chấm ở phía trước tên của nó. Ngoài ra: cẩn thận với các phiên bản git (xem câu trả lời của wisbucky)
Walter Tross

42

Hầu hết các hướng dẫn bạn thấy sẽ cho bạn biết tải xuống

https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash

và mã nguồn đó trong tập lệnh khởi động bash của bạn như .bashrc.

Nhưng có một vấn đề với điều đó, bởi vì nó đang tham chiếu đến masternhánh, là phiên bản mới nhất của git-completion.bash. Vấn đề là đôi khi nó sẽ bị hỏng vì nó không tương thích với phiên bản git bạn đã cài đặt.

Trên thực tế, ngay bây giờ điều đó sẽ bị phá vỡ vì masterchi nhánh git-completion.bashcó các tính năng mới yêu cầu git v2.18, mà chưa có trình quản lý gói và trình cài đặt nào cập nhật lên. Bạn sẽ gặp lỗiunknown option: --list-cmds=list-mainporcelain,others,nohelpers,alias,list-complete,config

Vì vậy, giải pháp an toàn nhất là tham chiếu phiên bản / thẻ phù hợp với git bạn đã cài đặt. Ví dụ:

https://raw.githubusercontent.com/git/git/v2.17.1/contrib/completion/git-completion.bash

Lưu ý rằng nó có v2.17.trong URL thay vì master. Và sau đó, tất nhiên, hãy đảm bảo nguồn đó trong tập lệnh khởi động bash.


Đây là câu trả lời tốt nhất cho macOS.
AShelly

Wow ... Sau khoảng một giờ vắt óc suy nghĩ về vấn đề này, nhận xét của bạn chính là chìa khóa. Cảm ơn cho giải pháp này! Vàng!
Myke Carter

4
Tệp dành riêng cho phiên bản macos đã có trên đĩa ở đây: /Library/Developer/CommandLineTools/usr/share/git-core/git-completion.bashĐể an toàn, tôi đã phân biệt tệp này với phiên bản 2.17.1 trên github và nó khớp.
jmt

18

Ubuntu 14.10

Cài đặt git-corebash-completion

sudo apt-get install -y git-core bash-completion
  • Để sử dụng phiên hiện tại

    source /usr/share/bash-completion/completions/git
  • Để luôn bật nó cho tất cả các phiên

    echo "source /usr/share/bash-completion/completions/git" >> ~/.bashrc

1
Cảm ơn bạn, điều này làm việc cho tôi trên Ubuntu 16.04 LTS :)
Mrunal Pagnis


5

Chỉ cần làm điều này trong ~/.bashrc:

source /usr/share/bash-completion/completions/git

Các câu trả lời khác đang yêu cầu bạn cài đặt bash-completion, bạn không cần phải làm điều đó, nhưng nếu bạn làm vậy, thì không cần trực tiếp lấy nguồn hoàn thành. Bạn làm cái này hay cái kia, không phải cả hai.

Một giải pháp chung chung hơn là truy vấn vị trí hệ thống theo đề xuất của dự án hoàn thành bash:

source "$(pkg-config --variable=completionsdir bash-completion)"/git

1
Giải pháp chung của bạn đã hoạt động hoàn hảo cho tôi trên Ubuntu 18.04. Để khởi động, phương pháp của bạn cực kỳ ngắn gọn - cảm ơn!
Jason R Stevens CFA

4

trên ubuntu của tôi có một tệp được cài đặt ở đây:

source /etc/bash_completion.d/git-prompt

bạn có thể theo các liên kết vào /usr/lib/git-corethư mục. Bạn có thể tìm thấy ở đó một hướng dẫn, cách thiết lập PS1 hoặc sử dụng__git_ps1


3

Có thể hữu ích cho ai đó: -

Sau khi tải xuống .git-complete.bash từ liên kết sau,

curl https://raw.githubusercontent.com/git/git/master/contrib/completion/git-completion.bash -o ~/.git-completion.bash

và cố gắng sử dụng hàm __git_ps1, tôi đã gặp lỗi là--

 -bash: __git_ps1: command not found

Rõ ràng là chúng ta cần tải xuống các tập lệnh riêng biệt với chính để làm cho lệnh này hoạt động, vì __git_ps1 được định nghĩa trong git-prompt.sh. Tương tự như khi tải xuống .git-complete.bash, hãy lấy git-prompt.sh:

curl -L https://raw.github.com/git/git/master/contrib/completion/git-prompt.sh > ~/.bash_git

và sau đó thêm phần sau vào .bash_profile của bạn

source ~/.bash_git
if [ -f ~/.git-completion.bash ]; then
  . ~/.git-completion.bash
export PS1='\W$(__git_ps1 "[%s]")>'
fi

source ~ / .bash.git sẽ thực thi tệp đã tải xuống và

export PS1='\W$(__git_ps1 "[%s]") lệnh sẽ nối tên chi nhánh kiểm tra sau thư mục làm việc hiện tại (nếu nó là kho lưu trữ git).

Vì vậy, nó sẽ giống như: -

dir_Name[branch_name] trong đó dir_Name là tên thư mục đang làm việc và branch_name sẽ là tên của chi nhánh bạn hiện đang làm việc.

Xin lưu ý - __git_ps1 phân biệt chữ hoa chữ thường.


1

Arch Linux

Nguồn /usr/share/git/completion/git-completion.bashtrong một trong các tệp khởi động bash.

Ví dụ:

# ~/.bashrc

source /usr/share/git/completion/git-completion.bash

Bạn có thể tìm thấy script ở những vị trí khác như thế /usr/share/bash-completion/completions/gitnhưng những script này không phù hợp với tôi.


-1

Ubuntu

Có một câu trả lời tuyệt vời ở đây . Làm việc cho tôi trên Ubuntu 16.04

các cửa sổ

Git Bash là công cụ cho phép tự động hoàn thành. Không chắc liệu đây có phải là một phần của phân phối tiêu chuẩn hay không, vì vậy bạn có thể thấy liên kết này cũng hữu ích. Nhân tiện, Git Bash cho phép sử dụng các lệnh shell Linux để làm việc trên windows, đây là một điều tuyệt vời cho những người có kinh nghiệm trong môi trường GNU / Linux.


-1

Trên Github trong dự án Git, Họ cung cấp tệp bash để tự động hoàn thành các lệnh git.

Bạn nên tải nó về thư mục chính và bạn nên buộc bash để chạy nó. Nó chỉ đơn giản là hai bước và được giải thích hoàn hảo (từng bước) trong bài đăng blog sau.

blog giải thích mã: autocomplete-git /

Tôi đã thử nghiệm nó trên mac, nó cũng sẽ hoạt động trên các hệ thống khác. Bạn có thể áp dụng cách tiếp cận tương tự cho các hệ điều hành khác.

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.