2012-03-15 25 views
21

tôi cập nhật tập tin .bashrc của tôi như sau:Hiển thị git tên chi nhánh tại dấu nhắc không hoạt động trong màn hình

PS1='[\[email protected]\h \W$(__git_ps1 " (%s)")]\$' 

Nó hoạt động chỉ cần tìm và tôi có thể nhìn thấy tên chi nhánh của tôi ở dấu nhắc. Tuy nhiên, khi tôi chạy "màn hình", tôi nhận được

"-bash: __git_ps1: command not found"

gì có thể là lý do cho việc này?

+0

Hãy xem chủ đề này: http://stackoverflow.com/questions/2231214/git-tips-and-tricks-display-branch-on-command-prompt-not-working-and-created- s – ChristofferH

Trả lời

3

thêm source ~/.bash_profile vào .bashrc.

Có cùng vấn đề và nó chỉ hoạt động với tôi.

7
# Add following line to /.bashrc to show Git branch name in ssh prompt 
PS1='\[\033[0;31m\]\w\[\033[0;33m\]$(__git_ps1)\[\e[0m\]$ ' 

\[\033[0;31m\] là đỏ

\[\033[0;33m\] là vàng

\[\e[0m\] là bình thường

8

Vấn đề là bash cần phải được chạy như một vỏ đăng nhập cho chức năng này có sẵn trong các mặc định thiết lập Cygwin. Nếu bạn chạy bash trong một bash cygwin bạn sẽ có cùng một vấn đề. Để thiết lập màn hình để chạy bash trong chế độ đăng nhập, thêm dòng này vào tập tin ~/screenrc của bạn:

shell -bash 
+1

Làm việc cho tôi trên OSX, cảm ơn! –

27

This blog post giải thích rằng bạn phải thêm dòng source /etc/bash_completion.d/git trước khi bạn có thể sử dụng __git_ps1.

Dưới đây là toàn bộ ví dụ:

source /etc/bash_completion.d/git 
export PS1='\w$(__git_ps1 "(%s)") > ' 

này cũng cho phép hoàn thành tự động cho chi nhánh.

Sử dụng định dạng đó, nhắc nhở của bạn sẽ giống (không màu):

~/my-repo(master) > 
+0

làm thế nào để bạn làm điều đó nhưng vẫn giữ lại thông tin nhắc nhở bình thường? (ví dụ: chỉ cần thêm tên tương ứng) – srcspider

+7

Trong Ubuntu 13.04, có vẻ như bạn phải tìm nguồn '/ etc/bash_completion.d/git-prompt' (mã nguồn lần lượt là'/usr/lib/git-core/git- sh-prompt') thay vì '/ etc/bash_completion.d/git'. (Bạn có thể phải tìm kiếm tệp hoàn thành chính xác cho nguồn ...) – michael

+1

__git_ps1 đã được chuyển khỏi hoàn thành git. Xem http://stackoverflow.com/a/12871094/551045 để biết thêm thông tin – RedX

22

tôi thấy nó sạch hơn để thay đổi dấu nhắc hiện tại thay vì xác định một hình mới. Đoạn mã sau thêm tên nhánh git vào dấu nhắc hiện tại (là $ PS1). Bạn có thể thêm đoạn mã sau vào file ~/.bashrc:

source /etc/bash_completion.d/git (for Ubuntu 12.04 or less) 
source /etc/bash_completion.d/git-prompt (for Ubuntu 13.04 and higher) 
PS1=$PS1'$(__git_ps1 "(%s) ")' 

Nếu bạn muốn có tên chi nhánh tại màu sắc mà bạn có thể làm điều đó quá: Ví dụ, màu xanh lá cây màu được định nghĩa là [ \ e [0; 32m]. Chúng ta thêm chuỗi này vào chuỗi bên trong của hàm git_ps1 và đặt lại màu bằng cách sử dụng \ e [0m sau đó. Các dấu ngoặc thoát được yêu cầu để chỉ ra rằng ký tự "đặc biệt" được chèn vào.

PS1=$PS1'$(__git_ps1 "\[\e[0;32m\](%s) \[\e[0m\]")' 

Nhiều định nghĩa màu sắc khác can be found here

+0

Để tô màu nhánh theo trạng thái của nó (sạch/bẩn/stashed/etc), bạn có thể sử dụng ** [git prompt script] (http://digitalfortress.tech/tutorial/setting-up-git-prompt-step) -từng bước/)**. –

0

này đã được thử nghiệm trên debian/ubuntu.


  1. cài đặt bash-completion gói
  2. đảm bảo các dòng sau tồn tại trong ~/.bashrc của bạn và không được nhận xét ra.

if [ -f /etc/bash_completion ] && ! shopt -oq posix; then 
    . /etc/bash_completion 
fi 
0

Nếu bạn không có __git_ps1 bạn có thể sử dụng

git branch --contains HEAD 2>/dev/null 

Nó hiển thị cùng __git_ps1 như thế nào.

Và nếu bạn tạo một bí danh như thế này:

alias __git_ps1='git branch --contains HEAD 2>/dev/null' 

ví dụ prombt của bạn, bạn nhận được với lệnh này:

$PS1='[\[email protected]\h \W(`__git_ps1`)]\$' 

hoặc với

PS1='[\[email protected]\h \W\[\033[36m\](`__git_ps1`)\[\033[0m\]]\$' 

nếu bạn thích màu sắc

kịch bản của bạn mà sử dụng __git_ps1 và bạn Promt sẽ làm việc hoàn hảo.

Các vấn đề liên quan