2011-10-07 38 views
70

Có cách nào để lấy danh sách các cam kết từ một số cam kết đã cho tới HEAD không?Làm cách nào để liệt kê các cam kết từ một số cam kết nhất định?

Tôi biết điều này là có thể bởi ngày cam kết, nhưng tôi cần nó bằng số cam kết và tôi dường như không thể tìm thấy bất kỳ tài liệu nào, hoặc thậm chí nếu điều này là có thể.

+0

Bạn đã sử dụng lệnh Git nào để liệt kê các cam kết từ tên cam kết đã cho? –

+0

Bạn có nghĩa là cam kết băm, phải không? Bạn cũng có thể sử dụng 'HEAD ~ 10' để có nghĩa là" 10 commit trước HEAD "để bạn có thể thực hiện' git log HEAD ~ 10..', nếu đó là ý của bạn bằng số commit. – Cascabel

Trả lời

87
git rev-list <since_hash>..HEAD 

hoặc để bao gồm các cam kết :

git rev-list <since_hash>^..HEAD 

Bạn có thể sử dụng git log thay vì git rev-list để nhận thêm chi tiết.

+0

Điều này làm việc hoàn hảo cho tôi, cảm ơn! Tôi thề rằng tôi đã thử điều này. Phải có một sai lầm. – ehftwelve

+0

@manojlds Tôi biết rằng 'HEAD' đang trỏ đến các cam kết cuối cùng, nhưng ý nghĩa của'^' –

+0

@KasunSiyambalapitiya'^'là một bí danh cho bố mẹ thứ nhất. Xem "ĐẶC BIỆT SỬA ĐỔI" trong https://www.kernel.org/pub/software/scm/git/docs/git-rev-parse.html - cũng xem https://git-scm.com/book thủ công/en/v2/Git-Tools-Revision-Selection - hoặc http://stackoverflow.com/questions/2221658/whats-the-difference-between-head-and-head-in-git – Michaelangel007

20

Bạn có thể chạy lệnh git sau từ vỏ:

git log --pretty=oneline commit-id...HEAD 
8

Giả sử rằng bằng cách "cam kết số", bạn có nghĩa là cam kết băm:

git log <commit-hash>..HEAD 
38
git log <hash>.. 

Là số tiền nhập ít nhất. Bỏ qua "HEAD" giả định đó là ý của bạn. Danh sách Rev cũng sẽ hoạt động.

+0

Đây là yêu thích của tôi. Tôi thích kết hợp nó với '--oneline'. Thay vì '', tất nhiên, bạn cũng có thể sử dụng ref như tên chi nhánh. – codener

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