이미 작성된 Git Commit의 날짜와 시간을 변경해보자!
기본적으로 깃(Git)은 특정한 프로젝트의 소스코드가 언제 변경되었는지 등을 감지하여 이력을 알려준다는 특징이 있습니다. 우리가 소스코드를 변경해서 커밋(Commit)을 진행하면 그 커밋이 진행된 시점을 기억하여, 깃 사용자에게 알려줍니다.
일반적으로 깃의 커밋 날짜는 변경하기 어렵다거나 변경하지 못하는 것으로 알고 있는 사람들이 많습니다. 하지만 실제로는 깃의 커밋 날짜 또한 변경이 가능합니다.
그래서 흔히 말하는 깃 허브 잔디밭의 '1일 1커밋'도 어렵지 않게 조작하여 달성할 수 있습니다.
저는 실습을 위해서 다음과 같이 하나의 깃 프로젝트를 준비해보았습니다.
① 필터링을 이용하는 방법
이 방법은 깃(Git)의 필터링 기능을 이용하는 방법입니다. 다만 모든 커밋 내역을 살펴보며 필터링을 수행한다는 점에서, 프로젝트의 규모가 클수록 오랜 시간이 걸릴 수 있습니다.
git filter-branch -f --env-filter \
'if [ $GIT_COMMIT = {Commit 해시 값} ]
then
export GIT_AUTHOR_DATE="Jan 1 10:00 2019 +0900"
export GIT_COMMITTER_DATE="Jan 1 10:00 2019 +0900"
fi'
또한 여기에서 주의할 점은, 위 소스코드에서 if문 안에 들어가는 내용에서 공백에 유의하셔야 한다는 것입니다. 공백을 지워버리면 제대로 동작하지 않을 수 있습니다.
적용 이후에 실제로 깃 로그(Log)를 확인해보시면 다음과 같이 변경되어 있는 것을 확인할 수 있습니다. 그와 더불어 변경된 커밋 이후의 커밋들의 해시 값까지 모두 변경되어 있는 것을 확인할 수 있습니다.
② git rebase를 이용하는 방법
우리는 git rebase를 이용해서도 특정한 커밋의 날짜를 변경할 수 있습니다.
git rebase {commit 해시 값} -i
기본적으로 rebase 명령어를 이용할 때는 변경하고자 하는 커밋의 이전 커밋을 기준으로 하여 -i 옵션(인터렉티브)으로 에디터 창을 열어주시면 됩니다.
이후에 변경하고자 하는 커밋의 선택 내용을 edit으로 적용하시면 됩니다.
이후에 다음의 명령어로 커밋 내역의 날짜를 변경하시면 됩니다.
GIT_COMMITTER_DATE="{날짜}" git commit --amend --no-edit --date "{날짜}"
저는 다음과 같이 2019년 1월 1일의 날짜로 커밋 내역을 변경했습니다.
결과적으로 변경 내역을 적용하고자 할 때는 git rebase --continue를 입력하시면 됩니다.
변경된 내용을 깃 허브에 푸시하면 어떻게 될까?
실제로 변경된 내용을 깃 허브(Git Hub)에 푸시하면 어떻게 될 지 확인해봅시다.
재미있게도, 잔디밭에도 해당 변경된 커밋의 날짜에 맞게 색깔이 칠해져 있는 것을 확인할 수 있습니다.
'Git으로 시작하는 협업과 오픈소스 프로젝트' 카테고리의 다른 글
자신의 깃허브(GitHub) 랭킹 및 통계 확인 방법 (0) | 2020.12.04 |
---|---|
깃허브(GitHub)에서 Organization를 생성하여 다수의 사용자에게 Private 저장소 Read-Only 권한 부여하기 (0) | 2020.11.09 |
깃(Git) 환경설정(config)에 대해서 알아보자! (0) | 2019.04.06 |
Git Rebase 명령을 이용해 특정한 커밋 수정/삭제 하기 (0) | 2019.04.03 |
Git 프로젝트 소개글(README.md) 작성하기 [Git으로 시작하는 협업과 오픈소스 프로젝트 11강] (0) | 2018.12.23 |