수정시 git commit author 날짜 업데이트


305

나는 내 커밋을 꽤 자주 수정한다는 것을 알았습니다. 내가 stash떠나기 전이나 주말 전에 내가 한 일을 저장하고 싶을 때 특히 잊어 버리는 경향이 있기 때문에 나는 그렇게 하지 않는다 . 그래서 나는 "초안"커밋을한다. 커밋을 수정해도 여전히 원래 작성자 날짜로 설정됩니다. 수정 할 때 업데이트하는 간단한 방법이 있습니까?


5
이것은 대화식 리베이스를 수행하고 GitHub가 풀 순서에 날짜 순서 대신 풀 요청에 커밋을 표시 할 때 특히 유용합니다.
Sukima

답변:


368

--date매개 변수를 사용하여 작성자 날짜를로 변경할 수 있습니다 git commit. 따라서 마지막 커밋을 수정하고 작성자 날짜를 현재 날짜 및 시간으로 업데이트하려면 다음을 수행하십시오.

git commit --amend --date="$(date -R)"

( RFC 2822 형식으로 날짜를 출력 -R하도록 date지시하는 매개 변수 입니다.이 형식은에 의해 이해되는 날짜 형식git commit 중 하나입니다 .)


27
FTR은 OS X와 ​​비슷 date하지만 모르겠습니다 -R. date옵션없이 사용하면 어쨌든 일을했다
ksol

7
이를 별칭으로 사용하려면을 추가 !하고 따옴표를 이스케이프 해야합니다.can = !git commit --amend --date=\"$(date -R)\"
Fabian Steeg

9
date -ROSX에서 작동하지 않습니다. date +%s대신 사용하십시오
stash

4
FreeBSD에 대한 Idem :git commit --amend --date="$(date +%s)"
Dereckson

120
git commit --amend --date=now또한 작동합니다. date (1) 명령 으로 서브 쉘을 호출 할 필요가 없습니다 . date.c 에서 git (1) 의 소스 코드에서 볼 수 있습니다. 'now'는 date_now () 함수를 사용하여 변환되는 특수 값입니다. 'noon', 'yesterday', 'midnight', 'tea'및 기타 구조 체형 배열에 나열된 것과 동일 [].
sbz

267

이를 수행하는 또 다른 방법은

git commit --amend --reset-author

이렇게하면 커밋 작성자와 날짜가 변경되지만 원래 커밋되지 않은 커밋 인 경우 no-op입니다.

--no-edit여러 커밋의 날짜를 업데이트하고 싶지만 커밋 메시지를 그대로 유지하려는 경우 추가 할 수도 있습니다 . 이렇게하면 각 커밋에 대한 메시지를 편집하라는 메시지가 표시되지 않습니다.


4
왜이 동작이 기본값이 아니고 명시 적으로 지정 해야하는지 궁금합니다. 매우 놀랍고 잠재적으로 나쁜 결과를 초래합니다. 내 이해에서 git commit --amend 변경 사항 은 조정이나 그와 비슷한 것이 아니라 커밋합니다. 즉, 모든 버전 제어 시스템이 매우 엄격한 저장소 내용 변경 내역이 다릅니다. 그리고 같은 나는 직관적으로 저자와 날짜 모두 실제 데이터를 커밋 일치가 될 것으로 기대합니다. 특히 저작권은 날짜가 아니라 중요합니다. 이러한 불이행을 담당하는 자식 개발자를이기려면이 의견에 투표하십시오. :)
Artem Pisarenko

258

Git v2.1.4 기준 (Debian 8 (Jessie)에서 테스트)

git commit --amend --date=now

8
커밋 메시지를 다시 표시하지 않으려면을 추가하십시오 --no-edit.
Henrik N

12

Mark의 답변을 좋아하고 여러 번 직접 사용했지만 이제는 OS X에 있고 date -R지원되지 않습니다. 그러나 모든 것이 원래 대답보다 훨씬 쉽습니다 . 빈 문자열을 사용하십시오 !

git commit --date= --amend

6
작동하지 않습니다. 힘내 오류와 함께 중단fatal: invalid date format:
Nikos C.

나를 위해 일했습니다 (Windows, Git 1.9.4)
Csq

1
--date="$(date)"OS X에서 사용 하는 -R것이 좋습니다. 옵션 은 GNUism입니다.
Rudá Moura

0

누군가가 여러 커밋 날짜를 변경하는 간단한 방법을 찾고 있다면이 npm 패키지를 만들었습니다.

https://github.com/bitriddler/git-change-date

용법:

npm install -g git-change-date
cd [your-directory]
git-change-date

17
실제로 다른 npm패키지 가 필요합니까 ? 아니요, git명령을있는 그대로 사용하는 방법을 배웁니다 .
Urda
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.