기본 설정 변경
깃을 처음 쓸 때, 일반적으로 아래와 같은 명령어로 이메일과 이름을 설정할 수 있다.
$ git config --global user.name "John Doe"
$ git config --global user.email "john@doe.org"
$ git config user.name "John Doe"
$ git config user.email "john@doe.org"
과거 커밋의 이름과 이메일 변경하기
그런데 종종 git의 이름이나 이메일을 잘못 쓸 경우가 있는데, 특히 학교, 회사, 개인용 이메일들을 여러개 써야하는 경우 잘못 커밋을 올리는 경우가 있다.
크게 문제가되는 경우는 없지만, 불편해서 변경하는 커맨드를 찾아본 결과, 아래와 같은 킹갓 명령어가 있음을 발견했다.
기존의 커밋을 덮어씌우는 것이므로, 굉장히 위험한 행위니까 조심해서 수행하기 바랍니다.
아래 스크립트는 모든 과거 히스토리를 뒤져서 이메일과 이름을 변경해준다.
$ git filter-branch --env-filter '
WRONG_EMAIL="wrong@example.com"
NEW_NAME="New Name Value"
NEW_EMAIL="correct@example.com"
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
export GIT_COMMITTER_NAME="$NEW_NAME"
export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
export GIT_AUTHOR_NAME="$NEW_NAME"
export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
이 명령어를 실행하면 다음과 같은 결과물이나오는데 (커밋 아이디 가림)
수행하면 커밋의 시간 순서등은 유지된체, 이름과 아이디만 변경된다는 뜻!
현재는 로컬의 커밋들만 변경한 것이니까
git log
를 쳐서 제대로 문제없이 변경됐는지 확인하고
remote 까지 영향을 주기 위해서는
git push -f
-f 옵션을 줘서 push 해야 한다.
같이 작업하고 있는 collaborator가 있다면 이왕이면 사용하지 않는 것이 좋겠죠?
조심 또 조심하시고 유용한 글이 되었길 바랍니다.
레퍼런스
'개발 > 잡다한팁' 카테고리의 다른 글
iterms 터미널 팁팁팁 (1) | 2018.03.25 |
---|