안냐세여!!!! 소드립니다 ㅎ-ㅎ
이번 포스팅은 Shell Script를 이용해서
이미 commit한 Author 바꾸기!!!!!
저번 포스팅에서 Rebase를 이용해서 바꿀 수 있는 것도 확인 헀어여
근데 그건 특정 커밋만 바꿀 때 해당이고,
만약 전체 커밋의 Author를 바꿔야 하는 경우거나,
특정 이메일로 커밋된 내용을 모두 바꿔야 하는 경우엔
Rebase를 이용하기 보다
Shell Script를 이용하는 것이 훨~~ 편합니다.
근데 다시 한번 말하지만,
이는 공동의 프로젝트에서 하는 것은 매우 위험해요.
기존 커밋의 내용을 바꿔버리고 강제로 푸시해버리는 것 때문에,
기존 프로젝트롤 clone 하여 사용하던 개발자들과 충돌이 날 수 밖에 없어요.
뭐 이미 모두의 합의 하에 하는 거면 상관 없다만,,,
그래도 여러 개발자가 협업하는 프로젝트라면
웬만해선 절대 하지 않는 것을 추천합니다 ㅎㅎ;
.
.
쨌든 위에건 알아서 조심하시구
이전 포스팅에서 했던 1번 방법이 Rebase를 이용한 방법이었고,
이번엔 2번부터 시작합니다.
2. Shell Script를 이용하여 특정 Author만 바꾸기
① 바꾸고 싶은 Author 확인하기
넹 무슨 말이냐면여
여기서 빨간 네모쳐져 있는 커밋의 Author이
con으로 오타나져 있는 거 보이나요?
파란 네모는 제대로 되어 있는데...!!
이처럼
soeun@email.con으로 잘못 커밋된 놈들의 모든 Author를 바꾸고 싶을 때 사용하는 방법입니다.
뭐 혹시 Commit Author 보는 방법 모르고 그러면
이전 포스팅 먼저 읽고오센
(이전 포스팅은 친절하게 다 설명 해줬음)
② Shell Script 고치기
저는 제대로된 2번 커밋은 바꾸지 않고,
잘못된 1, 3번만 바뀌는 것을 보여주기 위해
soeun@email.con -> soeunzzang@email.com
으로 바뀌게 해볼게여
다음 명령어를 이용할 건데여
그전에 변수를 고쳐줘야 해여
git filter-branch --env-filter '
WRONG_EMAIL="soeun@email.con"
NEW_NAME="soeun"
NEW_EMAIL="soeunzzang@email.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
'
|
위에 선언되어 있는 변수 중
WRONG_EMAIL="soeun@email.con" (잘못된 Commit의 Email)
NEW_NAME="soeun" (변경하고 싶은 Name)
NEW_EMAIL="soeunzzang@email.com" (변경하고 싶은 Email)
이부분은 알아서 바꿔주세요.
그럼 더이상 고칠 건 없음
③ Shell Script 실행하기
네 그리고 이제 프로젝트 터미널 명령어 창에 그냥 위 명령어를 복붙 하세여
붙여넣기 하면 이렇게 되거든요?
여기서 그냥 엔터 누르세여
그럼 위와같이 WARNING이 뜨면서 시간이 좀 걸리다가
Rewrite를 쓰기 시작해요.
내가 지금 있는 Commit이 3개이기 때문에 3개만 진행을 해요.
위에처럼 뜨면 성공적으로 된 것입니다
④ 제대로 바꼈는지 확인하자
git log 명령어를 통해 확인해 봐여
원하는 대로
2번 커밋은 안바뀌고
1, 3번 커밋의 Author만 잘 바꼈네여!
굳~~~~~~~~
⑤ git에 push 하자
네 이제 이렇게 변경된 사항은
git에 강 제 로 push 해야 합니다.
gimsoeuns-MacBook-Pro:CommitAuthChange soeun$ git push -f
위 명령어 사용하면 돼요
이렇게 뜨면
제대로 된 것입니다~~~!!!
3. Shell Script를 이용하여 모든 Author 바꾸기
이 방법은,
모~~~~~~든 Commit의 Author를 변경하고 싶을 때 사용해요
이건 따로 작성 안 할거예여
왜냐면 위 2번과 내용 똑가튼데
Shell Script 내용만 바뀌기 때문이지
똑같은 내용 두번 다 쓸라니까 넘나 힘들기 때문에
2번 내용으로 하시되,
Shell Script만 밑에 거로 바꿔주면 돼여
git filter-branch --env-filter '
NEW_NAME="soeun"
NEW_EMAIL="soeunzzang@email.com"
export GIT_AUTHOR_NAME=$NEW_NAME
export GIT_COMMITTER_NAME=$NEW_NAME
export GIT_AUTHOR_EMAIL=$NEW_EMAIL
export GIT_COMMITTER_EMAIL=$NEW_EMAIL
'
|
네 여기서도 마찬가지로 변수는 바꿔줘야 합니당
NEW_NAME="soeun" (변경하고 싶은 Name)
NEW_EMAIL="soeunzzang@email.com" (변경하고 싶은 Email)
여기선 모든 Author를 바꿔버리는 것이기 때문에,잘못된 이메일따윈 필요하지 않아요 캬캬캬
이 이후부턴 다시 2번 내용이랑 똑같이 진행하시면 됩니다!!
.
.
.
넹 그럼 끝!!!!!!!!!!!!!!!!!!!!!
질문이나 잘못된 점 있으면
댓글로 알려주세여~~~~~~~~~
다시 한번 말하자민,
협업할 땐 웬만해서 사용하지 않으시길!!!!!!!!!!!!!!!!!
'기타 > Github' 카테고리의 다른 글
Github) 원격 저장소에 push 된 commit의 author 바꾸기 (1) - Rebase 이용하기 (0) | 2020.06.28 |
---|---|
Github) commit 해도 contributions이 색칠되지 않는 문제 (2) | 2020.06.17 |