git rebase -i로 원하는 commit 고르기
git rebase -i --root
위 명령어를 실행하면 vi가 열리는데 원하는 commit을 pick
에서 edit
으로 바꾸고 :wq
로 저장하면 commit이 선택된다.
git log
명령어의 결과를 통해 지금 선택된 commit을 알 수 있다.
commit 날짜 수정하기
git commit --amend --no-edit --date "Mon Mar 28 20:11:36 2022 +0900"
data
부분에 들어갈 날짜를 원하는 날짜 및 시간으로 수정하면 된다.
git rebase --continue
만약 날짜를 바꾸고 싶은 commit이 한 개 이상이라 여러 개를 edit
으로 바꾸었다면 git rebase --continue
로 다음 commit으로 넘어갈 수 있다.
모종의 이유로 rebase를 멈추고 싶다면
git rebase --abort
를 사용하면 된다
다 바뀐게 아니다?
이 부분은 의도된 것이긴 한데 rebase로 commit을 수정하면 AuthorDate
는 바뀌지만 CommitDate
는 바뀌지 않는다.
git log --pretty=fuller
commit 1347db1ffc44e621d645bd76a52126b3761760d2
Author: Yun Seongmin <ilcm96@gmail.com>
AuthorDate: Mon Mar 28 20:11:36 2022 +0900
Commit: Yun Seongmin <ilcm96@gmail.com>
CommitDate: Sun Apr 3 22:58:16 2022 +0900
Initial commit
위와 같이 AuthorDate
는 바뀌었지만 CommitDate
는 그대로인 것을 볼 수 있다.
이를 수정하기 위해서는 git filter-branch
를 사용해야 한다.
git filter-branch --env-filter 'export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"'
GIT_COMMITTER_DATE
를 GIT_AUTHOR_DATE
로 덮어 씌운다는 명령어로 이 명령어를 실행하면 AuthorDate
와 CommitDate
가 같아지게 된다.
git push
이렇게 변경한건 강제로 push를 해줘야 한다
git push origin +main
위와 같이 브랜치명 앞에 +
를 붙이면 강제로 push된다.