2012-11-15 29 views
5

Giả sử lịch sử Git sau:Làm cách nào để nhận nhật ký Git cho một chi nhánh cụ thể?

Branch1  B---C-------F---G 
     / \   \ 
Master A-------D---E-------H 

Làm một git log chủ cung cấp cho các mục đăng nhập theo trình tự sau A-B-C-D-E-F-G-H. - nhưng tôi quan tâm đến lịch sử của thầy chỉ (nghĩa là A-D-E-H)

Làm thế nào tôi có thể "thoát khỏi" của log-mục không mong muốn từ Branch1? Tôi đã cố gắng rất nhiều tùy chọn cho git log, nhưng tôi không thể tìm thấy bất cứ điều gì phù hợp ...


Điều này dẫn đến một điều nữa tôi không hiểu trong bối cảnh này:

Nhìn vào log-history được cung cấp bởi git log master nó cho thấy cách mà nhánh chi nhánh của tôi phát triển (ABCDEFGH).

Nhưng làm một git checkout ĐẦU ~ 1 (giả sử tổng thể = HEAD) mang lại cho tôi E (Evolution ĐẦU ~ 3: Một-ĐẦU ~ 2: D-ĐẦU ~ 1: E-ĐẦU: H ->ADEH)

Đây là những gì tôi không hiểu: tổ tiên của H nhìn git logG, trong khi tổ tiên của H nhìn git checkoutE.

Tôi không hiểu điều này - tổ tiên của H là gì? G hoặc E ...


Kết luận: Những gì tôi muốn làm là git chỉ nhập mục từ HEAD đến HEAD ~ n chỉ (ví dụ ở trên n = 1 ... 3). Làm cách nào để đạt được điều này? Có thể ở tất cả?

+0

bản sao có thể có của [Git: Cách liệt kê các cam kết trên nhánh này nhưng không phải từ các chi nhánh đã hợp nhất] (http://stackoverflow.com/questions/10248137/git-how-to-list-commits-on-this-branch -bạn không-từ-sáp nhập-chi nhánh) – CharlesB

+0

Bạn đang đúng - đã có từ khóa tìm kiếm sai (và câu hỏi được trích dẫn là khá kém được gắn thẻ ...) – hoppfrosch

+0

@hopprosch: Tôi đã sửa các thẻ trong câu hỏi – CharlesB

Trả lời

6

gì bạn đang tìm kiếm là

git log --first-parent 

Tại sao lựa chọn đó được gọi là --first-parent trả lời câu hỏi của bạn

Tôi không hiểu điều này - tổ tiên của H là gì: G hoặc E?

Câu trả lời là: cả hai. E là số cha mẹ đầu tiên, nhưng G là cha mẹ thứ hai, vì H là một cam kết hợp nhất. Cam kết hợp nhất là cam kết có nhiều hơn một phụ huynh.

+0

Cảm ơn rất nhiều - đó chính xác là tôi đang tìm kiếm! Tôi đã chơi với TortoiseGit - có tùy chọn "đầu tiên" trong chế độ xem nhật ký. Nhưng điều này dường như không hoạt động chính xác trong mọi trường hợp (nếu "hiển thị tất cả các nhánh" được chọn, "first_parent" không hiển thị bất kỳ hiệu ứng nào ...) Điều này đã khiến tôi rời khỏi "cha mẹ đầu tiên" (TortoiseGit 1.7.14.0) – hoppfrosch

+0

không hoàn toàn rõ ràng, là danh pháp: tại sao tùy chọn được gọi là "--first-parent" (số ít) trong khi nó cung cấp cho hàng tổ tiên hoàn thành ở mức độ đầu tiên? Nên tốt hơn "--first-cha mẹ" IMHO – hoppfrosch

+0

@hoppfrosch Đối với mỗi cam kết gặp phải, chỉ có 'cha mẹ đầu tiên' của cam kết cụ thể đó được chọn. Cam kết H là một cam kết hợp nhất và vì vậy nó có hai cha mẹ (G và E), nhưng cha mẹ đầu tiên là E. Vì vậy, mỗi lần một cam kết hợp nhất là gặp phải, cha mẹ đầu tiên chỉ được theo sau, do đó bỏ qua các chi nhánh hàng đầu hoàn toàn. –

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