git 이미 등록된 commit 작성자 수정하기

yoondgu·2022년 10월 27일
0

버전 관리

목록 보기
4/4

안쓰던 노트북으로 작업을 하면서 git 설정에 github 사용자계정과 동일한 정보를 등록해놓지 않고 커밋을 해서 반영된 원격 저장소의 이력을 보면 github 사용자계정이 아닌 로컬 컴퓨터 계정 정보로 author, committer가 등록되어있었다.

따라서 먼저 git config를 이용해 git의 사용자 정보를 바꿔주어야 했다. github 계정에 등록된 이메일과 동일한 이메일을 user.email에 등록하면 github에서 알아서 인식해준다.

이미 커밋한 것도 수정을 할 수 있나 찾아보니 git —amend는 직전의 커밋에만 사용할 수 있고, 기존의 커밋을 변경하려면 커밋을 지웠다가 새로 만드는 rebase작업을 해주어야 했다. push한 커밋이나 아직 로컬에 있는 커밋이나 마찬가지였다.

주의할 점은 커밋을 새로 만드는 것이기 때문에 커밋 시간이 rebase한 현재 시점으로 바뀐다.
원치 않는다면 amend 작업 시 커밋 시간도 직접 입력해주어야 한다는데 이건 아직 안해봤다.
작성자 수정과 마찬가지로 커밋 메시지 내용도 amend와 rebase를 이용해 수정할 수 있다.

모든 커밋을 변경해야 할 때 반복하지 않고 일괄 반영하는 방법은 찾지 못했다.

  1. 로컬 git에서 사용자정보 등록 / 수정

     // 사용자 전역 설정
     git config --global user.name
     git config --global user.email
     // 해당 저장소에서만 사용자 설정
     git config --local user.name
     git config --local user.email

    이제 커밋을 할 때 설정한 사용자 정보로 등록된다.

  2. git rebase 할 커밋 선택

    // rebase할 커밋 목록을 처음(root)부터 끝까지 요청
    // 특정 범위만 요청할 경우 git rebase -i HEAD~n : HEAD로부터 n개
    // 특정 커밋만 요청할 경우 git rebase -i 커밋해시값
    git rebase -i --root    
  3. 2번을 입력하면 vi에디터에서 커밋 목록을 보여준다. 그 중 수정할 것들을 pick에서 edit으로 변경

    • reword는 커밋 메시지만 수정할 때 사용한다.
    • 작성자를 바꾸고 싶으면 edit으로 설정해야 각 커밋에 git --amend 명령어를 직접 입력할 수 있다.
    • 변경했으면 :wq로 저장 및 종료한다. (수정할 때는 vi 단축키를 활용할것)
  4. 터미널에서 지금 커밋을 수정할 거면 git --amend를, 더 수정할 것이 없고 계속 진행할 거면 git rebase --continue를 입력하라고 메시지가 출력된다.

  5. author 수정을 위해 아래 명령을 입력.

    git --amend --author=”아이디<이메일>
  6. 해당 커밋 메시지를 확인하고 수정할 수 있는 vi 에디터가 뜬다. 수정할거면 하고 안할 거면 :wq

  7. 수정을 완료했으면 git rebase --continue 입력하면 다음 커밋으로 이동

  8. 모두 완료할 때까지 반복

  9. push --force로 원격저장소에 반영한다. 공동으로 사용하는 저장소일 경우 주의할 것.

0개의 댓글