나는 git의 커밋 날짜를 덮어 써야하며 모든 문서는 --date 매개 변수를 가리 키지 만 적절한 형식에 대한 단서없이 남겨 둡니다. 나는 내가 생각할 수있는 모든 순열을 시도했고, 각각에 대해 "치명적 : 유효하지 않은 날짜 형식 :"오류가 발생합니다.
답변:
Git 2.6 이상 (2015 년 3 분기)에 새 옵션이 추가되었습니다.
참조 e4f031e 커밋 (2015년 6월 30일을), 및 aa1462c 커밋 , a5481a6 커밋 , b7c1e11 커밋 에 의해 (2015년 6월 25일) 제프 킹 ( peff
) .
(Merged by Junio C gitster
Hamano -- in commit d939af1 , 03 Aug 2015)
"형식"날짜 모드 도입
이렇게하면 형식이
strftime
.
좀 더 융통성있는 것 외에도 주요 이점은 시스템strftime
이 로케일의 선호 형식 (예 : 요일 철자법)에 대해 더 많이 알 수 있다는 것입니다.
--date=format:...
...
시스템에 형식 을 공급합니다strftime
. 시스템 로케일의 선호 형식으로 날짜를 표시하는 데
사용--date=format:%c
합니다. 형식 자리 표시 자의 전체 목록은 설명서를
참조하십시오strftime
.
Davide Cavestro 는 주석 에서 예제를 제안합니다 .
git commit -m "Test" --date=format:relative:5.hours.ago
원문 답변 (2014 년 중반)
--date
(도입 옵션 02b47cd 커밋 git1.7.0을 위해 12 월 2009 년)는보다 동일한 형식을 사용하여 GIT_AUTHOR_DATE
시험 날짜 형식으로, 96b2d4f 커밋 :
허용되는 다양한 형식을 볼 수 있습니다.
Mon, 3 Jul 2006 17:18:43 +0200
2006-07-03 17:18:43 +0200
Mon Jul 3 15:18:43 2006
2006-07-03
(1.9.1이 아님, 2.3.0에서 작동)상대 : 커밋 34dc6e7 참조 :
5.seconds.ago,
2.years.3.months.ago,
'6am yesterday'
raw : commit 7dff9b3 (git 1.6.2, 2009 년 3 월) 참조
내부 원시 git 형식 -epoch + 시간대 이후 초
(다른 방법으로 입력 : ' date +"%s %z"
'형식)
Mon Jul 3 17:18:43 2006 +0200
2006-07-03 15:18:43을 로컬로 받아들입니까?
예, 작동하며 자동으로 현지 시간대를 사용합니다.
해당 형식으로 나는 그것이 요일 (귀찮게 할 필요가 없습니다Sun
,Mon
등).
2006-07-03 15:18:43
에 대한 지역 ? 또한 상대 및 원시 형식이란 무엇입니까?
날짜 형식은 Documentation / date-formats.txt ( man git commit
) 에 문서화되어 있지 않으며 매우 "인간적으로"구문 분석됩니다.
작동하는 유일한 것은 date.c 에서 소스를 읽고 시도하는 것입니다.
2.3.0에서 VonC에서 언급하지 않은 사항 :
자릿수에 따라 자릿수 만 구문 분석됩니다.
2 자리 숫자 : 19YY, YY> = 73 인 경우, 현재 월, 일 및 시간. 그렇지 않으면 오류 또는 현재 날짜.
4 자리 숫자 : YYYY, YYYY> = 1973, <= 2099
> 8 자리에서 약간의 작은 제한 (TODO which?) : UNIX 시간 (1970 년 이후 초)
@<digits> +0000
: UNIX 시간.
이것은 UNIX 시간을 직접 입력하는 가장 좋은 방법 인 것 같습니다.
2 ** 64-2 (TODO why not -1?)는 커밋 오류를 일으키지 않는 최대 값입니다. 스탬프는 C 길이로 저장됩니다.
git log
2^55
1970 년과 같이 매우 큰 값 ( TODO 어디?)을 git cat-file -p HEAD
보여 주지만, 올바른 숫자가 저장되었음을 보여 주므로 날짜 변환의 제한처럼 보입니다.
보다 큰 경우 2**63 - 1
, 가장 큰 양의 부호가있는 long은 GitHub로 푸시하려는 시도가 date causes integer overflow
. GitHub에서 해당 날짜의 커밋 (GitHub 는 어떤 이유로 인해 정말 큰 날짜를 표시 할 수 없음 )
VonC는 이것이 부정적인 날짜를 차단하기 때문에 부끄러운 일이라고 지적했습니다. 1970 이전에 타임 스탬프를 갖도록 git 커밋을 설정할 수 있습니까? 이전 소프트웨어를 Git으로 마이그레이션하는 데 사용할 수 있습니다.
tea
: 오늘 17시 :-)
간단한 예 :
GIT_AUTHOR_DATE='2015-04-19 17:18:43 +0200' GIT_COMMITTER_DATE='2015-04-19 17:18:43 +0200' git commit -m 'Commit message'
아래의 축약 된 양식은 모두 작동합니다.
<month>/<day>
<month>-<day>
<day>.<month>
모호함이없는 경우, 즉 <day>
보다 큼 12
, 순서는 <month>
<day>
중요하지 않으며 구분 기호는 ' /
', ' -
'또는 ' .
' 중 하나가 될 수 있습니다 .
그렇지 않으면 ' .
'를 구분 기호로 사용 <day>.<month>
하고 ' /
'또는 ' -
'를 사용하십시오 <month>-<day>
.
따라서 " 1.7
"는 "7 월 1 일"로 취급되고 " 1/7
"는 "1 월 7 일"로 취급됩니다.
v1.3.0의 관련 커밋을 참조하십시오 .
구분 기호가 '.'이면 dd.mm.yyyy보다 선호합니다. mm.dd.yyyy; 그렇지 않으면 mm / dd / yy [yy]가 우선합니다. dd / mm / yy [yy].
이는 날짜 입력을받는 다른 명령에도 적용됩니다. 예 : 2 월 4 일 이후의 로그 표시 :
git log --since 2/4