2012-06-23 32 views
26

Tôi có Git (phiên bản 1.7.2.5) bash compeletion làm việc trên Debian squeeze của tôi (6.0). Git đã được cài đặt với aptitude và tôi đang sử dụng chuẩn debian's bash, hỗ trợ tự động hoàn thành dòng lệnh.Làm cách nào để thiết lập tự động hoàn thành cho lệnh Git?

Bây giờ, tôi vừa cài đặt Git (1.5.6.5) trên một máy khác (Lenny/Debian 5.0) và không có tự động hoàn thành.

  1. Tại sao tính năng tự động hoàn thành Git không hoạt động trên máy thứ hai? Làm cách nào để chẩn đoán điều này?

  2. Việc hoàn thành công việc trên máy của tôi là gì? Tôi đã tìm kiếm các tập tin git-completion.bash nhưng nó không có vẻ là trên máy tính của tôi. Làm thế nào để Git hoàn thành công việc?

  3. Làm thế nào tôi có thể mang git đầy đủ đến máy khác?

+0

Điều này * có thể * là câu hỏi phù hợp hơn cho [serverfault.com] (http://serverfault.com) hoặc [unix.stackexchange.com] (http : //unix.stackexchange.com) – poncha

+0

Hãy đảm bảo rằng bạn đã biên dịch git với tính năng tự động hoàn thành nếu bạn đã biên dịch từ nguồn. Ngoài ra hãy chắc chắn rằng bạn đang sử dụng cùng một trình bao như trên máy cũ của bạn và nó hỗ trợ tự động hoàn thành. Như bạn có thể thấy, tôi không chắc những gì đang gây ra nó để lại nó như một bình luận. Đó có thể là trình bao của bạn không cung cấp hoàn thành cho nó hoặc git không cài đặt hoàn thành đúng cách. Chúc may mắn. –

+0

@poncha cảm ơn. Tôi sẽ đăng lại trên unix.stackexchange.com – redochka

Trả lời

26

Bạn cần phải source /etc/bash_completion.d/git để bật tự động hoàn thành git.

Trong tôi .bashrc nó được thực hiện với:

for file in /etc/bash_completion.d/* ; do 
    source "$file" 
done 
+2

Điều này không hiệu quả đối với tôi, vì một số kịch bản hoàn thành bên trong các hàm trợ giúp được sử dụng '/ etc/bash_completion.d /' được định nghĩa trong 'bash_completion'. – joelpet

+0

Điều này làm việc cho CentOS 7 vì không có tệp '/ etc/bash_completion'. – Walf

38

Đặt những dòng sau trong ~/.bashrc

if [ -f /etc/bash_completion ]; then 
    . /etc/bash_completion 
fi 

Kịch bản/chương trình của bạn /etc/bash_completion đã bao gồm các script trong /etc/bash_completion.d và cũng xác định một số chức năng cần thiết các tập lệnh được bao gồm.

+2

Trong hệ thống Fedora 20 của tôi 'bash_completion' nằm trong'/usr/share/bash-completion/'. Chạy 'updatedb && locate bash_completion' sẽ giúp bạn tìm thấy nó. – joelpet

+1

Điều này cũng giải quyết được vấn đề "không có lệnh" của tôi "đã tìm thấy". Hàm "có" được định nghĩa trong/etc/bash_completion và nhiều tập lệnh trong /etc/bash_completion.d/ phụ thuộc vào nó. – jdunk

11

Con đường ngắn nhất để kích hoạt bash tự động hoàn thành cho Git trên Debian là thêm

source /etc/bash_completion.d/git 

đến ~/.bashrc (và khởi động lại thiết bị đầu cuối).

Xem thêm tại đây: "Pro Git" -> 2,7 Git Khái niệm cơ bản - Mẹo và thủ thuật ->Auto-Completion.

0

Sử dụng Notepad ++ để chỉnh sửa tệp ~/.bashrc của bạn. Đặt dòng ở cuối tập lệnh bằng dấu # ở đầu dòng. Lưu các tập tin. Ví dụ: # nguồn C: \ cygwin64/etc/bash_completion.d/git

Đừng quên đặt toàn bộ đường dẫn tệp sau 'nguồn' và phía trước '/ etc /' Ví dụ: cygwin64 của tôi thư mục chứa các 'vv' thư mục trong ổ c của tôi vì vậy đường dẫn tập tin của tôi là c: \ cygwin64/etc do đó dòng tôi bao gồm trong tập tin .bashrc của tôi là:

# source c:\cygwin64/etc/bash_completion.d/git 

Lưu bashrc file. Mở Cygwin Terminal ... Boom! Đó là thời gian. Tôi sau đó nhập lệnh sau và nó hoạt động. git clone git:\/\/github.com/magnumripper/JohnTheRipper -b bleeding-jumbo JtR-Bleeding

+3

câu hỏi là về debian, không phải windows – oromoiluig

7

Bạn cần cài đặt gói này nếu bị thiếu. Và sau đó đăng xuất và đăng nhập.

apt-get install bash-completion 
0

Đôi khi quá trình tự động hoàn thành biến mất vì bạn vô tình xóa tệp ~/.bashrc của mình. Kiểm tra xem tệp bashrc có trong thư mục chính của bạn hay không.Nếu không, bạn luôn có thể sao chép từ:

/etc/skel/.bashrc 
Các vấn đề liên quan