Visual Studio
git 저장소에서 rebase로 이전 커밋 수정시 date 유지하기 본문
개인적으로 git을 사용하다 보면 이전에 커밋했던 내용들을 수정하고 싶을 때가 있다.
이럴때 쓰는 명령어가 rebase인데,
git rebase --committer-date-is-author-date -i [바꾸고싶은commit의부모의id]
이렇게 --committer-date-is-author-date 옵션을 붙이면 각각의 commit을 amend 할 때 committer date가 현재 시각으로 갱신되지 않는다.
하지만 커밋을 여러 개로 분할 하고자 하거나, 커밋의 내용을 수정해야 할 때는 reset 한뒤에 따로따로 add 하고 commit 해야 하는데, 이렇게 되면 해당 옵션은 더이상 아무 역할도 하지 않는다.
결국 커밋할 때 author date와 committer date를 기존의 커밋과 동일하게 지정해야 하는데, 먼저 기존 커밋의 author date를 알아내야 한다.
이처럼 git log로 commit 의 author date를 알 수 있다.
git log --pretty=fuller로 committer date도 표시되게 할 수 있다.
이제 rebase 상태에서 각각의 분할된 커밋을 할 때 다음의 명령어를 입력하면 된다.
GIT_COMMITTER_DATE="SUN NOV 14 06:09 2021 +0900" git commit --date "SUN NOV 14 06:09 2021 +0900"
명령어가 길기 때문에 커밋 메시지는 -m 옵션 없이 편집기 켜서 적도록 하자
이후 원격 저장소에 --force 옵션과 함께 push 하면 된다.
여럿이서 사용하는 저장소일 경우 큰 혼란을 야기할 수 있으니 혼자 관리하는 개인 프로젝트의 커밋을 다듬을 때만 사용하길 바란다.