2016-11-18 18 views
10

Tôi tò mò về màu sắc của dòng có ý nghĩa gì trong git log --graph?Màu sắc của đường kẻ trong git log - biểu đồ nghĩa là gì?

Có, tôi hỏi về các dòng |/\ kết nối cam kết * ở cạnh trái của đầu ra bàn điều khiển.

part of git log --graph output

Câu hỏi # 1
Do những màu sắc có một số ý nghĩa ẩn?
Hoặc chúng có được chọn ngẫu nhiên không?

Câu hỏi # 2
Đôi khi các dòng chồng lên nhau (nhưng bị ngắt kết nối) có cùng màu.
Ví dụ, nhìn thấy ở các dòng tím trên ảnh chụp màn hình ở trên:

  • dòng đầu tiên từ a55 để e1c
  • dòng thứ hai từ 3c1 để 043

Có thể hỏi git để lựa chọn màu sắc một cách khôn ngoan để tránh bị cô lập (không có cam kết chung) cùng một đường màu để chồng lên nhau?
Tôi muốn biểu đồ dễ đọc hơn.

+0

Tôi đoán rằng cam kết trong chi nhánh giống với cam kết trong nhánh khác do hợp nhất trong khi các màu khác nhau biểu thị các cam kết riêng biệt. –

+0

Màu sắc có ý nghĩa gì? Không có gì. Chúng chỉ là một cơ chế giúp dễ dàng phân biệt trực quan hơn giữa các chuỗi cam kết khác nhau ... – twalberg

Trả lời

8

Màu sắc chỉ nhằm mục đích giúp bạn xem các dòng khác biệt với các dòng khác. Để trả lời câu hỏi số 1, chúng được chỉ định không giả ngẫu nhiên, nhưng thay vì tuần tự, mỗi lần git log --graph chọn một "số cột" mới. Thật không may có hai vấn đề tôi biết. Cả hai buộc vào câu hỏi của bạn # 2.

Here is the full list of colors by name:

GIT_COLOR_RED, 
    GIT_COLOR_GREEN, 
    GIT_COLOR_YELLOW, 
    GIT_COLOR_BLUE, 
    GIT_COLOR_MAGENTA, 
    GIT_COLOR_CYAN, 
    GIT_COLOR_BOLD_RED, 
    GIT_COLOR_BOLD_GREEN, 
    GIT_COLOR_BOLD_YELLOW, 
    GIT_COLOR_BOLD_BLUE, 
    GIT_COLOR_BOLD_MAGENTA, 
    GIT_COLOR_BOLD_CYAN, 

Nhìn bề ngoài, nhiều trong số những màu sắc "giống nhau" (hoặc đủ tương tự là loại không thể phân biệt). Đặc biệt, tôi thấy rằng những chữ "đậm" trông quá giống với chữ "thông thường" trừ khi có một vài chữ được in bằng chữ "đậm", tức là chữ "đậm" của Mac Terminal của tôi không phải là chữ đậm so với trọng lượng tiêu chuẩn của nó. Điều này làm cho nhiều đường quá trực quan tương tự trong biểu đồ cho git log --graph --decorate --oneline --all chạy trên kho Git cho Git, chẳng hạn.

Chỉnh sửa: hiện tại có thể khắc phục (hoặc có thể làm việc), kể từ Git 2.12, sử dụng mục nhập cấu hình log.graphColors mới. Đây là danh sách các tên màu hoặc số màu được phân tách bằng dấu phẩy (xem the git config documentation entry for "color" in the Values section).

Thứ hai, "số cột" hiện tại, không thực sự là số cột của dòng. Thay vào đó, đó là số cột của cam kết. Màu đường đi lên từ cam kết đó, với cam kết phía trên nó. Tất cả các dòng màu đỏ tươi trong ảnh chụp nhanh của bạn chuyển đến các cam kết được in trong cột # 0: cả hai a55fd8d3c1494a đều nằm trong "cột 0". (Cả hai đều hợp nhất các cam kết để chúng hợp nhất các dòng đến.)

Có thể yêu cầu git chọn màu sắc một cách khôn ngoan để tránh bị cô lập (không có cam kết chung) cùng các đường màu để chồng lên nhau không?

Bạn luôn có thể sao chép Git repository for Git và viết mã mới. Tôi sẽ lưu ý rằng hiện tại graph.c là gần 1400 dòng dài, mặc dù.

+0

Cảm ơn. Như tôi thấy bây giờ, thuật toán màu hiện được thực hiện trong git là đủ tốt cho một số dòng cam kết song song ("một nhánh cho mỗi nhà phát triển") và không tốt cho "nhiều nhà phát triển trên một nhánh" bằng cách sử dụng git repo (đó là một trường hợp thông thường cho nhiều tổ chức, AFAIK). –

+0

@torek, nếu bạn thích bạn có thể chỉnh sửa câu trả lời của bạn để đề cập đến sử dụng cấu hình 'log.graphColors' (bạn có thể sử dụng câu trả lời của tôi bên dưới nếu bạn muốn) để chọn màu. OP không yêu cầu điều này nhưng cài đặt này giải quyết các vấn đề về khả năng đọc đối với hầu hết mọi người. – hIpPy

+0

@hIpPy: thú vị; điều này là mới trong Git 2.12. – torek

3

Trong này cam kết 73c727d69f47572bf7f21fa31831f9a3fdad944c ("đăng nhập --graph: tùy chỉnh các đường đồ thị với log.graphColors config", 2017/01/19), nó có thể chọn màu sắc với log.graphColors config.

Ngay cả với thiết bị đầu cuối tiêu chuẩn, nếu màu nền của bạn không phải là màu đen hoặc trắng, sau đó dòng đồ thị có thể phù hợp với nền của bạn và trở thành ẩn. Bạn có thể loại trừ màu nền của bạn (hoặc chỉ đơn giản là màu sắc bạn ghét) với điều này.

Tôi sử dụng Git Bash và tôi loại trừ GIT_COLOR_BLUE màu vì lý do trên.

Tôi có thể sử dụng bất kỳ mã màu hex nào (ít nhất là trên Git Bash). Cài đặt cấu hình bên dưới chỉ sử dụng ba màu.

[log] 
    graphColors = "#ffffff",red,green 
Các vấn đề liên quan