Làm thế nào để tô màu đầu ra của git?


256

Có cách nào để màu đầu ra cho git (hoặc bất kỳ lệnh nào) không?

Xem xét:

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#       modified:   app/models/message_type.rb
#
no changes added to commit (use "git add" and/or "git commit -a")
baller@Laptop:~/rails/spunky-monkey$ git add app/models

baller@Laptop:~/rails/spunky-monkey$ git status
# On branch new-message-types
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#       modified:   app/models/message_type.rb
#

Đầu ra trông giống nhau, nhưng thông tin hoàn toàn khác nhau: tệp đã chuyển từ trạng thái không được sắp xếp sang giai đoạn để cam kết.

Có cách nào để tô màu đầu ra? Ví dụ: tập tin không được tô màu đỏ, dàn dựng có màu xanh lá cây?

Hoặc thậm chí Changes not staged for commit:sang màu đỏ và # Changes to be committed:màu xanh lá cây?

Làm việc trong Ubuntu.

EDIT: Googling tìm thấy câu trả lời này hoạt động tuyệt vời : git config --global --add color.ui true.

Tuy nhiên, có giải pháp nào chung hơn để thêm màu vào đầu ra lệnh không?


1
Bạn muốn một cái gì đó tô màu tất cả các đầu ra lệnh? Làm thế nào nó sẽ biết những phần để tô màu?
Michael Mrozek

Tôi đoán nếu có một cách để cấu hình nó bằng regex: Mỗi màu có thể có regex bắt đầu. Và có thể có một regex màu mặc định để tắt tất cả các màu. Và, nếu văn bản "foo" xuất hiện, hãy hiển thị nó trong một màu nhất định ...
B Bảy

Câu trả lời:


268

Bạn có thể tạo một phần [color]trong của bạn ~/.gitconfigvới ví dụ như nội dung sau

[color]
  diff = auto
  status = auto
  branch = auto
  interactive = auto
  ui = true
  pager = true

Bạn cũng có thể kiểm soát tốt những gì bạn muốn tô màu theo cách nào, vd

[color "status"]
  added = green
  changed = red bold
  untracked = magenta bold

[color "branch"]
  remote = yellow

Tôi hy vọng điều này sẽ giúp bạn bắt đầu. Và tất nhiên, bạn cần một thiết bị đầu cuối hỗ trợ màu sắc.


14
Tôi nghĩ rằng có thể đáng để đặt git config --global color.ui auto (câu trả lời của @Evgeny) lên đầu bạn ... Tôi nghĩ đó có thể là điều mà hầu hết mọi người đang tìm kiếm. Tôi đã ủng hộ cả hai ... Tôi chỉ nói rằng, vì lợi ích của Internet khi đến đây, tôi nghĩ rằng rất nhiều người chỉ muốn một lớp lót đơn giản. Tất cả tốt hơn nếu họ có được nó, cộng với lòng tốt của bạn.
msouth 17/05/2015

Điều này làm việc hoàn hảo cho tôi - trong [color "status"]phần tôi đã thêm branch = yellow.
Wayne Werner

3
bạn cũng có thể thêm phần [màu] vào tệp .git / config của dự án
andrej

Và bạn chỉ có thể đặt biến cấu hình cho một lệnh gọi git duy nhất: stackoverflow.com/a/18304605/134044
NeilG

220

Bạn có thể muốn sử dụng

git config --global color.ui auto

Phần autonói rằng git sẽ chỉ thử và sử dụng màu trên các thiết bị đầu cuối hỗ trợ nó, và bạn sẽ không nhận được chuỗi ANSI nếu bạn chuyển hướng đầu ra của lệnh git sang một tệp chẳng hạn. Đặt nó thành truegiống như autovà đây cũng là mặc định kể từ Git 1.8.4.

Đây color.uilà một cấu hình meta bao gồm tất cả các color.*cấu hình khác nhau có sẵn với các lệnh git.

Điều này được giải thích sâu trong git help config.


Bạn có thể giải thích sự khác biệt giữa color.ui true(mà autotrỏ đến) so với always? Tôi đọc tài liệu nhưng tôi vẫn không nhận được sự khác biệt.
chharvey

19
git config --global color.ui auto
git config --global color.branch auto
git config --global color.status auto

FYI, Chỉ điều này hoạt động cho phiên bản git 1.5.2.1, những câu trả lời khác thì không.
AbhiNickz

14

Câu trả lời được chấp nhận đưa ra giải pháp phổ biến nhất. Nếu vì bất kỳ lý do nào bạn không cần thay đổi cấu hình vĩnh viễn, giải pháp đó thực hiện, bạn có thể ghi đè cấu hình cho một lệnh git duy nhất:

git -c color.ui=always <usual git command and options>

Ví dụ:

git -c color.ui=always status
git -c color.ui=always diff

Đã kiểm tra: được hỗ trợ trên git 2.4.6, không được hỗ trợ trên git 1.7.1.


2
Đối với bất kỳ ai khác đang cố gắng lấy màu khi chuyển sang lessgiống như tôi, bạn có thể lesschuyển các ký tự thoát màu qua thiết bị đầu cuối thông qua less -R.
xdhmoore

Khi nào tính năng này được thêm vào?
Ondra ižka

11
git config --global color.ui always
git config --global color.branch always
git config --global color.diff always
git config --global color.interactive always
git config --global color.status always
git config --global color.grep always
git config --global color.pager true
git config --global color.decorate always
git config --global color.showbranch always

1

Bạn có thể làm điều này với Colourer Command Output Colourer . Nó chủ yếu hoạt động, nhưng tôi chưa tìm ra cách khắc phục lỗi trong đó nhắc nhở mong đợi đầu vào không được hiển thị và bạn không thể chỉ cần nhập đầu vào cần thiết đã biết và nhấn enter để tiếp tục trong mọi trường hợp.

Ví dụ về ~/.acoc.confcho git:

# git
[git/ae]
/.*(error:.*)/                                    red+bold
/.*(warning:.*)/                                  yellow
/.*(hint:.*)/                                     magenta
/.*(up-to-date).*/                                green+bold
/.*(nothing to commit).*/                         green
/^(\+.*)/                                         green
/^(-.*)/                                          red

.. những gì hoạt động độc đáo cùng với alias git="acoc git"trong .bash_profile.


Bạn có thể chia sẻ cấu hình của bạn cho acoc?
Greg Dubicki

Nvm, thật dễ dàng để viết. :) Đã thêm vào câu trả lời.
Greg Dubicki

1

Đối với một git diffđường ống màu vào less, điều này hoạt động:

git -c color.diff=always diff [...] | less -R

0

Tôi biết bài đăng đã bốn tuổi nhưng không ai trả lời từ trại của tôi, người mù màu. Nếu bạn có thể phân biệt màu sắc, bỏ qua bài viết của tôi.

ví dụ "trạng thái git" đưa ra văn bản có màu trắng trên nền / đen trên nền trắng (dễ đọc), màu xám đậm để xóa (không thể đọc được trên nền đen nhưng dễ đọc trên nền trắng) và màu xám trung bình được thêm vào (màu lúa mạch rõ ràng trên màu đen nền, không đọc được trên nền trắng). Tôi đã sử dụng để chuyển nền của cửa sổ đầu cuối sang / từ trắng / đen để tôi có thể đọc văn bản không đọc được. Một giải pháp đơn giản là nhiều hơn:

 git status | more

Điều này làm cho tất cả các văn bản dễ đọc trên một cửa sổ thiết bị đầu cuối nền trắng hoặc đen tiêu chuẩn.


1
Bạn cũng có thể thay đổi cấu hình để đặt mọi thứ thành không có màu theo mặc định ( color.ui = never).
Chàng trai với chiếc mũ

0

hoặc tắt tất cả / hầu hết các màu sắc thông qua:

git config --global color.ui false
git config --global color.branch false
git config --global color.diff false
git config --global color.interactive false
git config --global color.status false
git config --global color.grep false
git config --global color.pager false
git config --global color.decorate false
git config --global color.showbranch false

OP đã không tìm cách để biến ra màu sắc, chứ không phải để biến về màu sắc. Trong OP, ông đã nêu cách làm trong gitvà muốn một số cách làm theo nghĩa toàn cầu hơn. Nếu bạn biết phương pháp như vậy, xin vui lòng chỉnh sửa câu trả lời của bạn để giải thích điều đó.
Spellweaver Gypsy

đôi khi mọi người đang tìm kiếm một cái gì đó liên quan chặt chẽ nhưng hơi khác một chút - nhưng cảm ơn vì downvote.
theRiley ngày

Tôi thích nó @theRiley
Richard Lindhout
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.