기존에 저장되어있는 NAME과 EMAIL을 바꾸는 방법을 소개합니다.
저장소의 이력을 변경하는 명령어이기 때문에 주의하세요!
Plastic SCM을 Git hub에 연동하니 잔디가 안심긴다...
잔디를 심어보자
1. GIT과 Plastic SCM의 구조가 다른 문제
아래는 Plastic SCM을 GitHub로 옮긴 레포지토리를 git log로 확인한 것입니다.
Author: heeje1996@gmail.com <>
반면 정상적인 Github 레포지토리의 구조는 이렇게 됩니다.
Author: heeje <heeje1996@gmail.com>
이처럼 Name <EMAIL>
이 되어야하지만, GIT의 NAME
부분에 Plastic SCM의EMAIL
이 들어와있습니다.
이로 인해 잔디가 심겨지지 않았습니다.
2. 깃허브 이메일과 Plastic SCM의 이메일이 다른 문제
깃허브 이메일과 Plastic SCM의 이메일이 다르기 때문에 변경했어야 했습니다.
1. Git 저장소를 로컬에 복제(clone)합니다.
git clone https://github.com/username/repository.git repository
2. 최상위 디렉토리에 새로운 파일change_email.sh
을 만들고, 아래의 스크립트를 저장했습니다. (파일 이름은 상관없습니다)
🧨 주의사항: 아래의 스크립트는 Plastic SCM에서 Git hub로 동기화 한 레포에만 해당됍니다.
git filter-branch --force --env-filter '
OLD_EMAIL="변경 전 이메일@gmail.com"
CORRECT_NAME="변경 후 이름"
CORRECT_EMAIL="변경 후 이름@gmail.com"
if [ "$GIT_COMMITTER_NAME" = "$OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_NAME" = "$OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags
이 스크립트는 각각의 커밋의 이메일 주소를 변경합니다.
커밋 날짜는 변경되지 않으니 안심하세요!
3. 실행 권한을 부여하고
chmod +x change_email.sh
4. 스크립트를 실행합니다.
./change_email.sh
5. git log를 통해 잘 변경되었는지 확인합니다.
git log
6. git을 강제로 푸시합니다.
git push origin --force --all
참고자료
Plastic SCM을 Github와 연동하기 1
https://velog.io/@jaehyeoksong0/Plastic-SCM-2
Plastic SCM을 Github와 연동하기 2
https://velog.io/@jaehyeoksong0/troubleshooting-Plastic-SCM-1