2013-03-08 4 views
1

이제 3 월 8 일입니다. 나는 3 월 1 일부터 git 역사를보고 싶다. 그 때문에 나는 명령을 사용하고있다 :날짜 이후 커밋 기록 가져 오기 (이후/이후 매개 변수)

$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-01 0am" 

잘 작동한다. 그러면 나는 미래의 역사를보고 싶다. (3 월 8 일 이후로 +1 일에 after 값이 증가한다.) 예 :

$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-11 0am" 

명령이 올바른지 빈 역사를 반환합니다. 그런 다음 after 값은 18과 같다 :

$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-18 0am" 

힘내 전체 개월의 역사를 반환하기 시작합니다. 왜? 위의 예에서 git log 날짜 시간 형식이 잘못되었습니다.

자식 버전 1.7.12.4는 (애플 힘내-37)

+1

두 번째 및 세 번째 명령이 동일합니다. 또한, +1에 의해 '후'증가하지만 당신은 그것을 8 일이 아니라 11 일 이후로 설정했다고 말했습니다. –

+0

고정. 11 - 8-17 범위의 값 중 하나입니다. –

+1

구분 문자 (3 월 11 일 또는 11 월 3 일인가? 유럽인과 미국인이 다르다)를 기준으로 모호한 날짜 인'2013-3-11'을 다른 방식으로 해석하기 위해'git'에 들어간 것을 기억합니다. '/'또는'.'을 구분 기호로 사용하고 차이가 있는지 확인하십시오. – twalberg

답변

1

이 문제에 open bug 있습니다. 소스에서 git을 빌드 한 경우 test-date 유틸리티가 포함되어 있습니다.

$ ./test-date approxidate "2013-3-01 0am" 
2013-3-01 0am -> 2013-03-01 19:22:21 +0000 

$ ./test-date approxidate "2013-3-11 0am" 
2013-3-11 0am -> 2013-03-11 19:22:21 +0000 

$ ./test-date approxidate "2013-3-19 0am" 
2013-3-19 0am -> 2013-03-03 19:22:21 +0000 

그것은 시간이 모든 경우에 문제가 분명이 때문에 문제를 해결 할 수 있습니다 : - (18 그래서 19를 사용하여, 더 이상 나를 위해 브레이크 포인트입니다 주) 다음 그것을 통해 실행하는 여러 날짜의 일부 결과는 시간 : 조금 더 나은 보지 않는다, 우리의 미래의 날짜가 더 이상 심각하게 잘못이지만, 시간이 내 시간대를 기준으로하며, E (와 DST하지 않고있는 사이에 차이가

$ ./test-date approxidate "2013-3-01 0:00" 
2013-3-01 0:00 -> 2013-03-01 08:00:00 +0000 
$ ./test-date approxidate "2013-3-19 0:00" 
2013-3-19 0:00 -> 2013-03-19 07:00:00 +0000 

: 미래의 독자를 위해, DST 변경은 ​​2013-03-10에 발생 했으므로 해당 날짜는 변경 사항을 포함합니다).

$ ./test-date approxidate "2013-3-19 0:00 +0000" 
2013-3-19 0:00 +0000 -> 2013-03-19 00:00:00 +0000 

이제 날짜가 조금 나아졌습니다. 시간대를 적용하려면 지금 -0800/-0700, , PDT 또는 다른 시간대로 변경하기가 쉽습니다.

  1. 시간이 제대로 분석되지 않는 : 한마디로

    는 두 가지 문제가 있습니다. 일단 시간 구성 요소가 포함되면 git은 파싱 날짜에 대해 더 똑똑해집니다. 퀘스트에서
  2. 어떤 날짜를 구문 분석, 자식은 dd을 버리고 현재 월의 하루 당신의 mm를 사용하는 시간을 고정하고 선택적으로 추가하여

    $ ./test-date approxidate "2013-3-20" 
    2013-3-20 -> 2013-03-03 19:22:21 +0000 
    $ ./test-date approxidate "2013-4-19" 
    2013-4-19 -> 2013-03-04 19:22:21 +0000 
    $ ./test-date approxidate "2013-4-32" 
    2013-4-32 -> 2013-03-04 19:22:21 +0000 
    

문제는 고칠 수 있어야한다 의도에 따라 시간대.

+0

포괄적 인 답변 주셔서 감사합니다.읽은 후 나는 % d. % m. % Y "로 날짜 템플릿을 대체했으며 효과가있었습니다. –

관련 문제