본문 바로가기

기타/Github

Github) 원격 저장소에 push 된 commit의 author 바꾸기 (2) - Shell Script 이용하기

 

 

안냐세여!!!! 소드립니다 ㅎ-ㅎ

이번 포스팅은 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번 내용이랑 똑같이 진행하시면 됩니다!!

 

 

 

.

.

.

 

넹 그럼 끝!!!!!!!!!!!!!!!!!!!!!

질문이나 잘못된 점 있으면 

댓글로 알려주세여~~~~~~~~~

 

다시 한번 말하자민,

협업할 땐 웬만해서 사용하지 않으시길!!!!!!!!!!!!!!!!!



Calendar
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
최근 댓글
Visits
Today
Yesterday