2015-01-13 13 views
5

Với --date=localgit log hiển thị ngày trong tôi múi giờ (của người dùng):hiển thị dấu thời gian đăng nhập git ở định dạng ISO trong múi giờ của người dùng?

$ git log --date=local -3 --pretty=tformat:'%cd %h' --abbrev-commit 
Thu Dec 18 15:22:11 2014 dc20f74 
Thu Dec 18 14:01:26 2014 06c214f 
Tue Nov 4 03:48:44 2014 ac33158 

Các man-page nói

- ngày [...] Chỉ có hiệu lực cho những ngày thể hiện trong định dạng con người có thể đọc được, chẳng hạn như khi sử dụng --khá.

Nhưng với định dạng ISO %ci nó không có hiệu lực, như một vấn đề của thực tế --date=local và sản phẩm --date=default chính xác cùng một đầu ra:

$ git log --date=local -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74 
2014-12-18 22:01:26 +0000 06c214f 
2014-11-04 17:18:44 +0530 ac33158 

$ git log --date=default -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74 
2014-12-18 22:01:26 +0000 06c214f 
2014-11-04 17:18:44 +0530 ac33158 

Làm thế nào tôi có thể thấy git log trong một định dạng ít tiết trong múi giờ địa phương của tôi? Lý tưởng nhất là tôi muốn xem chúng trong '%C%m%dT%H%M%S', để sử dụng cú pháp ngày unix.

+0

bình luận thứ hai của bạn có '--date = default' quy định trong khi đầu của bạn có' --date = local'. Điều này có chủ ý không? "mặc định hiển thị dấu thời gian trong múi giờ ban đầu (của người cam kết hoặc của tác giả)", trang chủ git cho biết. – dcsohl

+0

Đó là một dán xấu. '--date = local' có cùng đầu ra. Tôi sẽ cập nhật câu hỏi. –

+0

Làm cách nào để biết trường hợp hàng đầu nằm trong múi giờ của người dùng? Không có thông tin múi giờ được in và các cam kết hiển thị có khác với các cam kết hiển thị ở dưới cùng. Nó sẽ là tốt đẹp để có một chút nhất quán hơn. – dcsohl

Trả lời

0

Dường như không thể hiển thị %ci (định dạng thời gian ISO) được chuyển đổi thành múi giờ của người dùng địa phương; nó luôn hiển thị trong múi giờ của người cam kết. Bạn có thể sử dụng %ct và phân tích đầu ra và định dạng lại nó bằng tiện ích như date hoặc một số tập lệnh khác hoặc sử dụng %cd.

6

Có thể với git 2.7 (Q4 2015), giới thiệu -local làm hướng dẫn.

Điều đó có nghĩa rằng, ngoài của:

--date=(relative|local|default|iso|iso-strict|rfc|short|raw) 

bạn cũng sẽ có:

--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local) 

Bây giờ bạn có thể yêu cầu bất kỳ định dạng ngày sử dụng múi giờ địa phương.

Trong trường hợp của bạn:

git log --date=iso-local -3 --pretty=tformat:'%cd %h' --abbrev-commit 
       ^^^^^^^^^ 
        |____| that part is new! 

Xem commit 99264e9, commit db7bae2, commit dc6d782, commit f3c1ba5, commit f95cecf, commit 4b1c5e1, commit 8f50d26, commit 78a8441, commit 2df4e29 (03 Tháng 9 2015) bởi John Keeping (johnkeeping).
Xem commit add00ba, commit 547ed71 (03 tháng 9 năm 2015) theo số Jeff King (peff).
(Merged bởi Junio C Hamano -- gitster -- trong commit 7b09c45, 05 Oct 2015)

Đặc biệt, commit add00ba đề cập:

date: làm cho "local" trực giao với định dạng ngày:

Hầu hết chúng ta " --date "chế độ là về định dạng của ngày: các mục mà chúng tôi hiển thị và theo thứ tự nào.
Nhưng "--date=local" là một chút kỳ quặc.Nó có nghĩa là "hiển thị ngày ở định dạng bình thường, nhưng sử dụng múi giờ địa phương".
Các múi giờ chúng tôi sử dụng là trực giao với các định dạng thực tế, và không có lý do chúng tôi không thể có "ISO8601 cục bộ", vv

vá này thêm một "local" boolean trường để "struct date_mode", và giọt DATE_LOCAL yếu tố từ date_mode_type enum (bây giờ chỉ là DATE_NORMAL cộng với local=1).
Tính năng mới có thể truy cập được đối với người dùng bằng cách thêm "-local" vào bất kỳ chế độ ngày nào (ví dụ: "iso-local") và chúng tôi giữ lại "local" làm bí danh cho "default-local" để tương thích ngược.

+1

Điều này dường như không hoạt động như mong đợi, ít nhất là trên Fedora với git 2.7.4-2.fc24: 'git log - -date = iso-local -3 --pretty = tformat: '% cd% h' --abbrev-commit' tạo '2016-03-11 15:51:49 +1000 67398e9', tức là với múi giờ. – seanf

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