Home Git commit 날짜 변경하기
Post
Cancel
Preview Image

Git commit 날짜 변경하기

개요

  • 최근 피곤해서 1일 1커밋을 제대로 못 할 위기가 많아졌다.
  • 실제로 오늘까지 2번 정도 변경하게 되어, 이를 정리하고자 글을 쓰게 되었다.
  • 앞으로는 작업을 커밋하는 시간을 변경해서 보다 안정적으로 커밋을 지속할 계획이다…

방법

  • 전체적으로 Git commit의 날짜와 시간을 변경하는 방법은 2가지가 있다.
    • 필터링을 이용
    • git rebase를 이용
  • 필자는 2번 정도 변경해봤기 때문에, 실제로 위의 2가지 방법을 모두 이용해봤다.
  • 개인적으로 git rebase 이용이 더 깔끔하고, 오류 메시지도 안 볼 수 있고, 쉽게 작업이 가능했다.
  • 따라서 git rebase 이용하는 방법만 정리해보자.

사전 확인 사항

  • 먼저 이 글을 읽는 사람은 아마 대부분 다음의 경우에 해당될 것 같다.
    • “아 어제 깃허브 커밋 빼먹었네… 이거 어떻게 채우지…ㅠ”
    • (정말 변태적인 경우) “아 커밋한 시간이 마음에 안드는데 시간을 바꾸고 싶다…”
  • 보통 어제, 혹은 엊그제, 혹은 지난 일주일간 못한걸 채우기 위해서라면 아래 소개된 방법은 잘 따라하면 된다.
  • 물론 과거의 임의의 시간으로 수정이 가능하기에 그것만 알아두면 된다.

git rebase를 이용해서 변경하기

  • 사진은 나중에 첨부하겠다.
    • 사실 어제 작업한걸 캡쳐했어야 했는데, 게을러서 캡쳐를 하지 않았다.
    • 말로도 충분히 진행될 만큼 열심히 작성하겠다…
  • 먼저 현재 작업하고자 하는 git repo. 를 원격과 동기화 해놓자.
  • [Local]
    • 커밋할 작업을 진행한 뒤 커밋을 하자.
      • 아직 깃허브 혹은 원격 저장소에 보내면 안된다!
    • 윈도우라면 해당 폴더에서 git bash 창을, 맥/리눅스라면 해당 폴더에서 터미널을 켜자.
      • 윈도우10에서 PowerShell은 제대로 작동하지 않는다는 것을 명심하자.
      • 필자도 이미 겪어본 사실…
      • 아래에서는 git bash 창과 터미널을 공통적으로 터미널이라고 부르겠다.
    • 터미널에서 git log를 입력해, 현재 작성된 커밋과, 원격에서 가리키는 커밋을 확인하자.
    • git rebase 명령어를 이용할 때는 변경하고자 하는 커밋의 이전 커밋을 기준으로 한다.
      • 즉, 방금 작성한 로컬의 커밋의 날짜와 시간을 변경하고자 한다면, 그 전의 커밋으로 작업을 진행해야한다.
    • 다음 명령어를 터미널에서 실행하자.
      • 1
        
          $ git rebase {이전 커밋의 해쉬 값} -i
        
    • 첫 줄부터 입력한 커밋 이후의 작업 내용이 나온다.
      • pick 해쉬값 커밋내용 순서대로 나온다.
      • 변경하고자 하는 커밋의 선택 내용을 pick에서 edit으로 변경한 다음 나오면 된다.
      • 일반적인 vim 에디터라고 가정한다면, i를 눌러서 커서를 이동해 변경한 다음, esc를 눌러서 커맨드 모드로 변경한 뒤 :wq를 이용해서 저장하고 종료하면 된다.
    • 터미널에서 다음의 명령어를 실행하자.
      • 1
        2
        3
        4
        
          $ GIT_COMMITTER_DATE="{날짜}" git commit --amend --no-edit --date "{날짜}"
          # 예를 들어 2020년 3월 29일 오전 08시로 변경하고자 한다면,
          # GIT_COMMITTER_DATE="Mar 29 08:00:00 2020 +0900" git commit --amend --no-edit --date "Mar 29 08:00:00 2020 +0900"
          # 을 입력하면 된다.
        
    • 다음의 명령어를 통해 변경된 내용을 적용하자.
      • 1
        
          git rebase --continue
        
    • git log를 통해서 제대로 변경되었는지 확인하자.
    • 원격 저장소에 푸쉬하여 제대로 적용되었는지 확인하자.

References

This post is licensed under CC BY 4.0 by the author.

CI와 DI

[독서리뷰] 단순한 것이 아름답다