Cách đọc biểu đồ git log


92

Trong sách cộng đồng git, nó nói

Một điều thú vị khác mà bạn có thể làm là trực quan hóa biểu đồ cam kết với tùy chọn '--graph', như sau:

$ git log --pretty=format:'%h : %s' --graph
* 2d3acf9 : ignore errors from SIGCHLD on trap
*   5e3ee11 : Merge branch 'master' of git://github.com/dustin/grit
|\
| * 420eac9 : Added a method for getting the current branch.
* | 30e367c : timeout code and tests
* | 5a09431 : add timeout protection to grit
* | e1193f8 : support for heads with slashes in them
|/
* d6016bc : require time for xmlschema

Nó sẽ cung cấp một biểu diễn ASCII khá đẹp của các dòng lịch sử cam kết.

Tôi nên đọc biểu đồ này như thế nào? Làm thế nào để 420eac9khác với phần còn lại?

Câu trả lời:


116

Các dấu hoa thị cho biết nơi nào đó đã được cam kết:

e1193f8, 5a0943130e367ccam kết với nhánh trái (sinh ra a |ở nhánh phải) trong khi 420eac9cam kết với nhánh phải (sinh ra a |ở nhánh trái). Và đó là điều 420eac9khác biệt so với phần còn lại: đó là cam kết duy nhất đến đúng nhánh.

Vì lợi ích của sự hoàn chỉnh:

  • d6016bc là điểm phân nhánh
  • 5e3ee11 là cam kết hợp nhất
  • 2d3acf9 là cam kết đầu tiên sau khi hợp nhất

4
Tôi đã có một câu hỏi về thời gian cam kết như được hiển thị trong biểu đồ. Trong biểu đồ, '420eac9' được hiển thị trên '30e367c', '5a09431' và 'e1193f8'. Điều đó luôn có nghĩa là '420eac9' được cam kết sau ba phần còn lại, hay là các cam kết trên một nhánh được nhóm lại với nhau và thứ tự xuất hiện giữa các nhánh không có mối tương quan về thời gian?
Parag

4
@Parag: các cam kết trong một nhánh được nhóm lại với nhau. 420eac9đã được thực hiện sau khi cam kết đầu tiên của e1193f8chi nhánh nhưng không nhất thiết phải sau30e367c
eckes

1
@eckes, vậy các |biểu tượng ở bên trái (ngoài cùng bên trái) có phải là đại diện của chi nhánh mà tôi hiện đang ở trên không?
J86

@ J86 nếu bạn chuyển sang một nhánh khác và chạy cùng một lệnh, bạn sẽ nhận được cùng một đầu ra, vì vậy không có tham chiếu trong biểu đồ đến nhánh hiện tại mà bạn đang ở
onofricamila

19

420eac9nằm trên một nhánh khác với 3 cam kết "bên dưới" nó. Các nhánh rẽ ra sau đó d6016bcvà chúng được hợp nhất lại 5e3ee11.


4
Có thể một cách diễn đạt hay hơn các nhánh phân kỳ là nhánh thứ hai được tạo ra d6016bcvà phát triển song song với nhánh ban đầu.
Ilkka
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.