반응형

오늘은 커밋의 날짜를 바꾸는 방법에 대해 알아보려고 합니다.

Github 잔디 심을 때 유용하게 사용하실 수 있을 것 같네요.

 

여러가지 버전으로 알려드리도록 할게요.

1. 커밋할 때 어제 날짜로 커밋하기(또는 N일 전으로 커밋하기)
2. 특정 날짜, 시간을 골라서 커밋하기
3. 바로 최근 커밋에 날짜 변경하기
4. 특정 커밋 날짜 수정하기

 


 

1. 커밋할 때 어제 날짜로 커밋하기

커밋을 아직 하지 않은 상태라면 다음과 같이 git commit --date "1 day ago" -m "커밋 메시지"를 작성 해주면 하루 전의 오늘 날짜로 커밋이 됩니다. 여기서 눈치 채셨겠지만 숫자 1을 2로 바꾼다면 이틀 전의 오늘 시간으로 커밋이 되겠죠?

 

그리고 만약 -m "커밋 메시지"를 제외하면 vim 또는 (설정을 해줬다면)VS Code 창이 열려서 직접 메시지를 작성해줘야 합니다. 웬만하면 커밋 메시지까지 같이 작성해주는 게 편합니다.

git commit --date "1 day ago" -m "커밋 메시지"

 


 

2. 커밋할 때 특정 날짜, 시간을 골라서 커밋하기

다음과 같이 --date 다음에 특정 일을 작성해주면 해당 날짜와 시간에 맞게 커밋이 됩니다. 마찬가지로 커밋 메시지를 포함해줍니다.

git commit --date "Thu 30 Mar 2023 10:00:00 KST" -m "커밋 메시지"

 


 

그리고 이미 커밋이 되어 있는 상태에서 해당 커밋 날짜를 변경해줄 수도 있습니다.

다음 설명하는 3, 4번이 이에 해당합니다.

 

3. 바로 최근 커밋에 날짜 변경하기

최근 커밋에 날짜를 변경하는 것은 위에 설명을 잘 이해하셨다면 거기에 --amend--no-edit을 활용하여 변경할 수 있습니다.

--amend는 최근 커밋의 수정사항을 적용하여 새로운 커밋을 만드는 메시지입니다(일종의 이전 커밋을 덮어쓴다고 이해하면 됩니다). 그리고 --no-edit은 이전 커밋 메시지를 수정하지 않는다는 뜻입니다.

# 최근 커밋을 어제의 현재 시간으로 변경하기
git commit --amend --no-edit --date "1 day ago"

# 최근 커밋을 특정 날짜, 시간으로 변경하기
git commit --amend --no-edit --date "Thu 30 Mar 2023 10:10:00 KST"

 

그렇다면 다음과 같이 --no-edit을 빼고 -m "커밋 메시지"를 추가 한다면 이전 커밋의 날짜를 수정하면서 동시에 새로운 커밋 메시지로 덮어쓸 수도 있겠죠?

# 최근 커밋을 어제의 현재 시간으로 변경하기
git commit --amend --date "1 day ago" -m "커밋 메시지"

# 최근 커밋을 특정 날짜, 시간으로 변경하기
git commit --amend --date "Thu 30 Mar 2023 10:10:00 KST" -m "커밋 메시지"

 


4. 특정 커밋 날짜 수정하기

커밋을 이미 여러번한 상태에서 특정 커밋의 날짜를 변경하고 싶은 경우도 있을텐데요. 이번에는 이 과정을 보여드리겠습니다.

이번에는 위와 다르게 이해를 돕고자 이미지를 포함하여 설명해보도록 하겠습니다.

 

먼저 본인의 CLI(cmd, terminal, ...)를 엽니다. 저는 맥이라 터미널을 열게요. 그리고 프로젝트 경로로 이동한 후 git log 명령어를 통해 다음과 같이 커밋 쌓은 내역을 확인합니다. 커밋 메시지를 보기 쉽게 1부터 최근 커밋 6까지 작성을 했습니다. 여기서 5번째 커밋인 '5'의 날짜를 4월 7일에서 4월 8일로 변경해보겠습니다.

 

 

먼저 '5'를 수정하기 위해서는 '5' 커밋 이전으로 rebase를 시켜줘야 하는데요.

 

여기서는 '5' 바로 전인 '4'에서 commit 오른쪽에 나오는 해시값(903213~)을 먼저 복사합니다(git log 이후 빠져나오는 방법은 [q] 단축키를 입력합니다).

 

그 후 다음과 같은 명령어를 입력합니다. 같은 뜻으로 최근 커밋부터 6부터 2칸 뒤인 4를 이동하는 뜻에 HEAD~2를 입력해도 됩니다.

# 커밋 메시지 5로 이동하기 위해 git rebase -i 뒤에 4의 해시값을 입력
git rebase -i 90321349e2a93d8f77e05775e5fdf2e0852ec715

# 위와 동일한 방법 다른 명령어
# 가장 최신 커밋인 6으로부터 2칸 뒤인 4를 지칭하는 명령어
git rebase -i HEAD~2

 

그러면 다음과 같은 창이 나오는데요. 여기서 단축키 [i]를 누르면 다음과 같이 'INSERT'라는 명령어가 나옵니다. 이제 수정을 할 수 있는데요.

 

 

위에 변경하려고 했던 커밋 '5'의 pickedit으로 변경합니다.

그 후 단축키 [ESC]를 누르고, 단축키로 :wq를 입력해 빠져나옵니다.

 

 

그러면 현재 위치가 '5' 커밋이 되는데요. 여기서부터는 쉽습니다. 

앞서 배웠던 명령어를 입력하시면 됩니다. --amend는 가장 최근 커밋을 덮어쓴다고 했죠?

현재 최근 커밋은 '5'이기 때문에 해당 명령어를 입력하면 '5'의 커밋에 반영됩니다.

 

git commit --amend --no-edit --date "Sat 8 Apr 2023 00:00:00 KST"

 

그리고 마지막으로 다음 명령어를 입력합니다. git rebase --continue는 "방금 커밋에서 할 일을 다 했으니 다음으로 넘어가줘" 정도로 이해하시면 됩니다. 중간에 하다가 실수 했을 때는 git rebase --abort를 입력해서 해당 작업을 중도 취소할 수도 있습니다.

 

git rebase --continue

 

결과를 확인해보면 커밋 메시지 '5'의 날짜와 시간이 위에서 입력한대로 바뀐 것을 확인할 수 있습니다.

 

 

 


이상으로 커밋 날짜, 시간을 수정하는 작업을 알아보았습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기