Git định dạng màu sắc đẹp


81

Tôi đang cố gắng thiết lập màu định dạng đẹp cho Git. Từ những gì tôi có thể cho biết phiên bản 1.6.0 chỉ nhận ra màu đỏ, xanh lá cây và xanh lam.

$ git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %Cyellowyellow%Creset %Cblueblue%Creset %Cmagentamagenta%Creset %Ccyancyan%Creset %Cwhitewhite%Creset"
red green %Cyellowyellow%Creset blue %Cmagentamagenta %Ccyancyan %Cwhitewhite

Ngoài ra, không có màu nào hoạt động với định dạng màu trong ngoặc đơn.

Có cách nào để liệt kê các màu định dạng đẹp có sẵn cho Git không?

Thật không may, điều này xảy ra trên máy SCO OpenServer 5.0.7 cũ và phiên bản Git cuối cùng do SCO Skunkworks phát hành là 1.6.0.3.


1
Nếu nền tảng của bạn đã lỗi thời, tại sao bạn không tải xuống git 1.8.x mới nhất từ ​​git-scm.com và tự biên dịch? Sau đó, nó sẽ hỗ trợ tất cả các tính năng gần đây nhất.
mvp

@mvp Vâng, như bạn đã nói, nền tảng này đã lỗi thời - nghĩa là thiếu môi trường xây dựng GNU. Tôi đang chuẩn bị mã nguồn ứng dụng hiện có để chuyển sang Linux.
James Allman

Lưu ý rằng Git 2.3.0 (tháng 2 năm 2015) sẽ cho phép các giá trị màu 24 bit và quản lý tốt hơn các thuộc tính màu (đậm, gạch dưới, ...). Xem câu trả lời của tôi bên dưới
VonC

Git 2.26 (Q1 2020) sẽ thêm thuộc tính "sáng" để hỗ trợ các màu sáng aixterm. Xem câu trả lời đã chỉnh sửa của tôi bên dưới
VonC

Câu trả lời:


142

Tôi không có một phiên bản cũ của gitđể xác minh rằng các màu sắc khác hơn red, bluegreenđược hỗ trợ.

Mặc dù, có một điều tôi nhận thấy ngay cả với các phiên bản gần đây của git(như 1.7.10 tôi đã sử dụng) là màu sắc khác hơn red, greenbluecần phải nằm trong dấu ngoặc đơn (). Đối với red, greenblue, các dấu ngoặc đơn là không bắt buộc.

Vì vậy, hãy thử cái này:

git log --pretty=format:"%Credred%Creset %Cgreengreen%Creset %C(Yellow)yellow%Creset %Cblueblue%Creset %C(magenta)magenta%Creset %C(cyan)cyan%Creset %C(white)white%Creset"

Các danh sách các màu sắc Tôi biết ít nhất là:

normal
black
red
green
yellow
blue
magenta
cyan
white

Nó có thể được kết hợp với một trong các thuộc tính sau:

bold
dim
ul
blink
reverse
italic
strike
bright  # (Git 2.26, Q1 2020, example: brightred)

Nếu bạn đang cố gắng thay đổi màu sắc bằng cách sử dụng, .gitconfigbạn có thể chỉ định hai màu - nền trướcnền sau và bạn có thể kết hợp nó với một thuộc tính.


Tôi tin rằng bạn đúng ở chỗ chỉ những màu cơ bản mới được hỗ trợ. Định dạng màu trong ngoặc đơn hoàn toàn không hoạt động trong phiên bản này (1.6.0.3).
James Allman

16
không gian riêng biệt foreground, nền & các thuộc tính như% C này (đỏ xanh đậm)
HexInteractive

Có ít nhất hai thuộc tính khác: in nghiêngđình công như được viết trong cuốn hướng dẫn ở đây git-scm.com/docs/git-config và vì lý do completness.
câu hỏi khác vào

1
@onemorequestion Không thành vấn đề. Tôi đã chỉnh sửa câu trả lời cho phù hợp. Nhân tiện, tôi thực sự thích câu trả lời khác của bạn ( stackoverflow.com/a/61487052/6309 ).
VonC

39

Git 2.3.0 (tháng 2 năm 2015) sẽ cho phép (nhờ Jeff Kink ( peff) ):


parse_color: hỗ trợ các giá trị RGB 24-bit

Một số thiết bị đầu cuối (như XTerm) cho phép thông số kỹ thuật màu RGB 24-bit đầy đủ bằng cách sử dụng phần mở rộng cho bảng màu ANSI thông thường.
Hãy cho phép người dùng chỉ định màu RGB hex, cho phép tính năng quan trọng của trang trí ref màu hồng nóng :

git log --format="%h%C(#ff69b4)%d%C(reset) %s"

  • quản lý tốt hơn các thuộc tính màu:

parse_color: Recognition " no$foo" để xóa $foothuộc tính

Bạn có thể bật các thuộc tính văn bản ANSI như "đảo ngược" bằng cách đặt "đảo ngược" trong thông số màu của bạn. Tuy nhiên, bạn không thể yêu cầu tắt ngược lại.

Đối với những trường hợp thông thường, điều này không thành vấn đề. Bạn sẽ bật "đảo ngược" khi bắt đầu phần được tô màu, sau đó xóa tất cả các thuộc tính bằng "đặt lại".

Tuy nhiên, bạn có thể muốn bật một số thuộc tính, sau đó vô hiệu hóa những thuộc tính khác một cách có chọn lọc. Ví dụ:

git log --format="%C(bold ul yellow)%h%C(noul) %s"

chỉ gạch dưới hàm băm mà không cần chỉ định lại phần còn lại của các thuộc tính.

Điều này cũng có thể giúp các chương trình của bên thứ ba, chẳng hạn như contrib/diff-highlight, muốn bật / tắt một số thuộc tính mà không làm gián đoạn màu hiện có.

Lưu ý rằng một số đặc tả thuộc tính có thể là vô nghĩa (ví dụ: " bold nobold"). Chúng tôi không bận tâm đến việc gắn cờ các cấu trúc như vậy, và thay vào đó hãy để thiết bị đầu cuối sắp xếp nó.


Với Git 2.26 (Q1 2020), 7 màu cơ bản đã học được các màu tương phản sáng hơn (ví dụ: " brightred") .

Xem cam kết c444f03 , cam kết 1751b09 , cam kết 4a28eb0 (21 tháng 1 năm 2020) bởi Eyal Soha (``) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết 87f17d7 , ngày 25 tháng 2 năm 2020)

color.c: hỗ trợ màu sáng aixterm

Người ký tên: Eyal Soha

Những màu này là các biến thể tươi sáng của màu 3-bit.

Thay vì phạm vi 30-37 cho tiền cảnh và 40-47 cho hậu cảnh, chúng tương ứng trong phạm vi 90-97 và 100-107.

Các git configtài liệu hiện nay bao gồm:

Những màu sắc cơ bản chấp nhận được normal, black, red, green, yellow, blue, magenta, cyanwhite.
Màu đầu tiên được đưa ra là tiền cảnh; thứ hai là nền.

Tất cả các màu cơ bản ngoại trừ normalcó một biến thể sáng có thể được chỉ định bằng cách thêm màu vào trước bright, như brightred.


Xem thêm stackoverflow.com/a/12798205/6309 : git 2.9.1 hỗ trợ hai thuộc tính mới: nghiêng và gạch ngang.
VonC

2
Bạn có biết cách bao gồm màu RGB bên trong bí danh git không? #ff69b4hoạt động trên dòng lệnh nhưng không phải trong một bí danh, vì #bắt đầu một lời nhận xét
Tim Malone

@TimMalone Tôi chưa kiểm tra nó, nhưng trang người dùng cấu hình cho biết "Khoảng trắng đứng đầu sau tên =, phần còn lại của dòng sau ký tự nhận xét đầu tiên #hoặc ;và khoảng trắng cuối của dòng bị loại bỏ trừ khi chúng được đặt trong dấu ngoặc kép . "
VonC

1
@TimMalone Đặt toàn bộ bí danh trong "-quotes và sau đó bí danh #sẽ không đặc biệt.
Tom Hale

@VonC, tôi nhận được các ký tự kỳ lạ khi chuyển các git logđầu ra lệnh đó thành văn bản hoặc clip. Có vẻ như điều này xảy ra khi màu sắc và thuộc tính được sử dụng với --format. Bất kỳ ý tưởng tại sao hoặc sửa chữa cho điều này?
hIpPy 27/12/16

7

Chia sẻ định dạng nhật ký git của tôi:

$ git log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

Bạn cũng có thể thêm bí danh vào ~ / .gitconfig :

[alias]
    logs  = log --graph --pretty=format:'%C(magenta)%h%Creset -%C(red)%d%Creset %s %C(dim green)(%cr) %C(cyan)<%an>%Creset' --abbrev-commit

thì bạn có thể sử dụng bí danh như bạn xác định trong ~/.gitconfig.

$ git logs

7
Câu hỏi đặt ra là làm thế nào để tìm ra các màu định dạng đẹp của git.
Rapnar

4

Tôi đang sử dụng Ubuntu 18.04 và tôi đã có thể sử dụng các đề xuất của Xiaofei HAN.

Đối với người mới bắt đầu cố gắng hoàn thành điều này, tôi đã gặp may mắn nhất là chỉnh sửa .gitconfig.

nano ~/.gitconfig

dán khối [bí danh] từ trên xuống dưới văn bản hiện có

CTRL + O (để viết ra) + CTRL + X (để đóng nano)

Sau khi làm điều này, để xem các màu sắc đẹp bạn có thể sử dụng

git logs

sử dụng

'git log' sẽ giúp bạn xem mà không có màu sắc,

tương tự đối với 'git logs --oneline', ngoại trừ một cái sẽ hiển thị sự phát triển ở bên cạnh

cảm ơn bạn, tôi hy vọng điều này sẽ giúp ai đó


4

Đây là hai bí danh mà tôi đã viết khi tôi hiểu cú pháp của việc sử dụng các giá trị màu thập lục phân tùy chỉnh như được hiển thị trong câu trả lời của @VonC.

Có bốn phiên bản, sự khác biệt duy nhất là lệnh --graph và các phiên bản 'f' cũng sẽ hiển thị cho bạn các tệp đã được thêm, xóa hoặc sửa đổi:

[alias]
    lg = log --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    l1 = log --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"    
    lgf = log --name-status --graph --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s" 
    l1f = log --name-status --pretty=format:"%C(#cd9a00)%h\\%C(#0080ff)\\ <%an>\\ %C(#17b062)(%cr)\\ %d\\%C(#c0d6de)%s"

Tôi đã sử dụng trang web này để chọn màu chính xác mà tôi muốn và sau đó sao chép giá trị hex từ nó:

https://www.colorhexa.com/

Đối với Windows, hãy mở tệp .gitconfig nằm trong Thư mục "C: \ Users \ YourUserName" của bạn và thêm phần bí danh như được mô tả ở trên.

Hy vọng bạn thích họ.

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.