안쓰던 노트북으로 작업을 하면서 git 설정에 github 사용자계정과 동일한 정보를 등록해놓지 않고 커밋을 해서 반영된 원격 저장소의 이력을 보면 github 사용자계정이 아닌 로컬 컴퓨터 계정 정보로 author, committer가 등록되어있었다.
따라서 먼저 git config
를 이용해 git의 사용자 정보를 바꿔주어야 했다. github 계정에 등록된 이메일과 동일한 이메일을 user.email에 등록하면 github에서 알아서 인식해준다.
이미 커밋한 것도 수정을 할 수 있나 찾아보니 git —amend
는 직전의 커밋에만 사용할 수 있고, 기존의 커밋을 변경하려면 커밋을 지웠다가 새로 만드는 rebase
작업을 해주어야 했다. push한 커밋이나 아직 로컬에 있는 커밋이나 마찬가지였다.
주의할 점은 커밋을 새로 만드는 것이기 때문에 커밋 시간이 rebase한 현재 시점으로 바뀐다.
원치 않는다면 amend 작업 시 커밋 시간도 직접 입력해주어야 한다는데 이건 아직 안해봤다.
작성자 수정과 마찬가지로 커밋 메시지 내용도 amend와 rebase를 이용해 수정할 수 있다.
모든 커밋을 변경해야 할 때 반복하지 않고 일괄 반영하는 방법은 찾지 못했다.
로컬 git에서 사용자정보 등록 / 수정
// 사용자 전역 설정
git config --global user.name
git config --global user.email
// 해당 저장소에서만 사용자 설정
git config --local user.name
git config --local user.email
이제 커밋을 할 때 설정한 사용자 정보로 등록된다.
git rebase 할 커밋 선택
// rebase할 커밋 목록을 처음(root)부터 끝까지 요청
// 특정 범위만 요청할 경우 git rebase -i HEAD~n : HEAD로부터 n개
// 특정 커밋만 요청할 경우 git rebase -i 커밋해시값
git rebase -i --root
2번을 입력하면 vi에디터에서 커밋 목록을 보여준다. 그 중 수정할 것들을 pick에서 edit으로 변경
터미널에서 지금 커밋을 수정할 거면 git --amend
를, 더 수정할 것이 없고 계속 진행할 거면 git rebase --continue
를 입력하라고 메시지가 출력된다.
author 수정을 위해 아래 명령을 입력.
git --amend --author=”아이디<이메일>”
해당 커밋 메시지를 확인하고 수정할 수 있는 vi 에디터가 뜬다. 수정할거면 하고 안할 거면 :wq
수정을 완료했으면 git rebase --continue
입력하면 다음 커밋으로 이동
모두 완료할 때까지 반복
push --force
로 원격저장소에 반영한다. 공동으로 사용하는 저장소일 경우 주의할 것.