Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Visual Studio

git 저장소에서 rebase로 이전 커밋 수정시 date 유지하기 본문

Git

git 저장소에서 rebase로 이전 커밋 수정시 date 유지하기

emacser 2021. 11. 21. 06:19

개인적으로 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 하면 된다.

 

 

 

여럿이서 사용하는 저장소일 경우 큰 혼란을 야기할 수 있으니 혼자 관리하는 개인 프로젝트의 커밋을 다듬을 때만 사용하길 바란다.