2012-12-21 32 views
28

tôi có một cam kếtGit log: lọc theo cam kết của ngày tác giả

commit 8a183536da1641afa6bd5a27ae391b387b7cd052 
Author:  hidden 
AuthorDate: Fri Sep 7 10:13:59 2012 
Commit:  hidden 
CommitDate: Fri Dec 7 17:29:24 2012 

Tôi muốn lọc các bản ghi và hiển thị các cam kết bởi AuthorDate.

Tôi đã thử --since & --until tùy chọn, nhưng nó thực sự lọc CommitDate.

Điều đó có nghĩa tôi chỉ có thể nhận được cam kết bởi

git log --since='2012-12-01' --until='2012-12-10' 

Nếu tôi muốn để có được những bộ lọc cam kết bởi ngày_tháng_bắt_đầu '2012/09/01' và end_date '2012/09/10'

Có lời khuyên nào không?

+0

@skalee 'Sep' và' Dec' không giống nhau ... –

Trả lời

6

Tôi sợ bạn cần phải làm một số kịch bản:

git log --format="%ad %H" --date=iso | sort | ruby -ane 'date = $F[0] ; hash = $F[3] ; puts hash if ("2013-08-23".."2013-09-26").cover?(date)' 

đã cung cấp cho tôi:

 
3eddb854eaea971e9a60147153f0f3c9be4f1a5a 
dfeefd4715c4fddef0957c5aff238c525bb1def6 
db654badb97f3784286171d4645e9face6a42865 
62cdba07e6ae0cd28752491a83f584d3e18a5619 
7643a0458a54200f8944583d66c089d63c1bf688 
23b720852a36e959d0f45f9d11f05d4aa7ee0cb9 
f729ec9c5bf37ee0284a8db47cbc79a0b53145bb 
bc2d647ae86fbff1246ba163a5a99d25ed2f3523 
a0752b3cbae39698449be953153ddaafe35c054c 
8e88fffc75cbdda333c86cb4f5eb9b5b30263c27 

Thật không may, git log 3eddb854eaea971e9a60147153f0f3c9be4f1a5a..8e88fffc75cbdda333c86cb4f5eb9b5b30263c27 không được bảo đảm để làm việc vì những cam kết có thể nằm trong các chi nhánh khác nhau.

Hãy giải thích những gì tôi đã làm:

  1. --format="%ad %H" - định dạng log như author_date commit_hash dòng
  2. --date=iso - ngày ở định dạng YY-mm-dd HH:MM:SS
  3. sort - lệnh Unix mà sắp xếp theo thứ tự abc dòng; nó phù hợp để sắp xếp ngày theo định dạng ISO
  4. ruby -ane - thực thi tập lệnh ruby. -n có nghĩa là thực hiện cho mỗi dòng, -a chia các dòng đó và đặt các trường thành $F mảng, -e đặt trước tập lệnh để thực thi
  5. ("2011-02-23".."2011-02-26").cover?(date) - tạo phạm vi từ hai chuỗi và kiểm tra xem ngày đó có phù hợp hay không (theo nghĩa thứ tự chữ cái) , chúng tôi đã không phân tích những ngày đó)

Tôi không biết phải làm gì tiếp theo (để cung cấp cho bạn nhật ký đẹp hơn), nhưng vui lòng chuyển bạn đến điểm này.

10
git log --format=format:"%ai %aE %s" 

và sau đó grep theo Tên tác giả và/hoặc ngày!

1

Đôi khi tôi muốn biết các cam kết được tôi tự động vào một ngày nhất định. Đối với điều đó tôi sử dụng git log --all --author=jpo --format="%ai %s" |grep -E ^2015-09-01. Thật không may là cách tiếp cận sẽ không hoạt động để lọc theo phạm vi ngày nói chung nhưng đối với phạm vi được sử dụng trong câu hỏi, bạn có thể dễ dàng thực hiện: git log --all --author=jpo --format="%ai %s" |grep -E ^2012-12-(0.|10) Nếu bạn muốn biết thêm thông tin về các cam kết bên cạnh ngày tác giả và thư cam kết chỉ cần thêm tham số vào chuỗi định dạng (kiểm tra phần TÌNH TRẠNG TỪ CHỐI của trang git help log).

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