들어가며

Git 커밋 시간을 조정해야 하는 상황이 있을 수 있습니다. 예를 들어:

  • 다른 시간대에서 작업한 커밋 기록 정리
  • 프로젝트의 시간순 커밋 기록 유지
  • 백업에서 복원된 코드의 타임스탬프 조정

단, 커밋 시간 조정은 신중하게 수행해야 하며, 특히 협업 프로젝트에서는 주의가 필요합니다.

커밋 시간 조정 방법

1. 새 커밋 생성 시 시간 지정

새로운 커밋을 만들 때 특정 시간을 지정할 수 있습니다:

1
2
3
4
5
# ISO 8601 형식 사용
git commit --date="2024-05-25T23:31:13+09:00" -m "기능: 로그인 구현"

# 상대적 시간 지정
git commit --date="2 days ago" -m "문서: README 업데이트"

2. 최근 커밋의 시간 수정

가장 최근 커밋의 시간만 수정하려면:

1
2
3
4
5
# 시간만 수정
git commit --amend --date="2024-05-25T23:31:13+09:00" --no-edit

# 시간과 메시지 모두 수정
git commit --amend --date="2024-05-25T23:31:13+09:00" -m "수정된 커밋 메시지"

3. 이전 커밋의 시간 수정

특정 과거 커밋의 시간을 수정하려면 인터랙티브 리베이스를 사용합니다:

1
2
3
4
5
# 최근 3개 커밋 수정
git rebase -i HEAD~3

# 특정 커밋 이후부터 수정
git rebase -i <commit-hash>

리베이스 편집기에서:

edit abc1234 첫 번째 커밋 메시지
pick def5678 두 번째 커밋 메시지
pick ghi9012 세 번째 커밋 메시지

그 다음:

1
2
git commit --amend --date="2024-05-25T23:31:13+09:00" --no-edit
git rebase --continue

실제 사용 예시

시나리오 1: 오프라인 작업 동기화

1
2
3
# 어제 작업한 내용 커밋
git add .
git commit --date="yesterday 14:30" -m "기능: 오프라인 작업 내용"

시나리오 2: 시간대 차이 조정

1
2
# UTC 기준으로 커밋 시간 설정
git commit --date="2024-05-25T14:31:13Z" -m "문서: API 명세 업데이트"

주의사항

  1. 협업 프로젝트에서의 사용

    • 푸시된 커밋의 시간 수정은 피하기
    • 팀원들과 사전 협의 필요
    • 브랜치를 따로 만들어 작업
  2. Git 히스토리 관리

    • 커밋 시간 수정은 히스토리를 변경함
    • 강제 푸시가 필요할 수 있음
    • 백업 권장
  3. 모범 사례

    1
    2
    3
    4
    5
    
    # 변경 전 현재 상태 백업
    git branch backup/before-rebase
    
    # 변경 후 강제 푸시 필요시
    git push origin master --force-with-lease
    

결론

커밋 시간 조정은 유용한 Git 기능이지만, 신중하게 사용해야 합니다. 특히 협업 프로젝트에서는 팀 규칙과 Git 작업 흐름을 고려하여 적절히 활용하시기 바랍니다.