컴공생의 다이어리
[Git] 커밋(commit)들의 특정 작성자(Author) 일괄 변경 본문
Git 커밋(commit)들의 특정 작성자(Author) 일괄 변경
아래 게시물에서 커밋의 작성자를 일괄적으로 변경하는 방법(모든 커밋의 작성자를 변경)에 대해 정리한 적이 있다. 오늘 게시물에서는 나와 여러 사람들이 있는 커밋들 사이에서 나의 커밋 정보(작성자, 이메일) 즉, 특정 작성자의 정보를 변경하는 방법에 대해 정리하고자 한다. 이 방법 또한 같이 협업을 진행하고 있는 상황에서 독단적으로 처리하는 것은 위험하다. 프로젝트가 진행중이거나 의논이 필요한 상황이라면 협의를 하고 진행하는 것을 추천한다.
아래 명령어에서 OLD_NAME에 바꾸려고 하는 대상인 작성자명을 넣고 CORRECT_NAME에 바꿔질 작성자 명을, CORRECT_EMAIL에 바꿔질 이메일을 채우고 한번에 그대로 복사해서 명령어를 입력하면 변경될 것이다.
git filter-branch --env-filter '
OLD_NAME="바꿀_대상의_작성자명"
CORRECT_NAME="바꿀_작성자명"
CORRECT_EMAIL="바꿀_이메일주소"
if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' -- --all
아래는 위에 있던 명령어에 대한 예시이다. 설명하자면, 커밋 작성자 이름이 Kang인 것에 대해 작성자명을 Kkk로 변경하고 이메일 주소를 kkk@gmail.com으로 변경한다는 명령어이다.
# Example
git filter-branch --env-filter '
OLD_NAME="Kang"
CORRECT_NAME="Kkk"
CORRECT_EMAIL="kkk@gmail.com"
if [ "$GIT_COMMITTER_NAME" = "$OLD_NAME" ]
then
export GIT_COMMITTER_NAME="$CORRECT_NAME"
export GIT_COMMITTER_EMAIL="$CORRECT_EMAIL"
fi
if [ "$GIT_AUTHOR_NAME" = "$OLD_NAME" ]
then
export GIT_AUTHOR_NAME="$CORRECT_NAME"
export GIT_AUTHOR_EMAIL="$CORRECT_EMAIL"
fi
' -- --all
혹시나 아래와 같은 에러가 발생한다면 git filter-branch --env-filter ' 을 git filter-branch -f --env-filter ' 로 변경해서 실행시키면 된다.
Cannot create a new backup.
A previous backup already exists in refs/original/
Force overwriting the backup with -f
https://melkia.dev/ko/questions/750172?page=3
728x90
반응형
'Development > Git' 카테고리의 다른 글
[Git] 특정 커밋(commit) 삭제 : rebase 사용 (1) | 2022.03.16 |
---|---|
[GitHub] 깃허브 실수로 삭제한 저장소(Repository) 되살리기 (0) | 2022.02.27 |
[GitHub] 깃허브 Organization private 저장소 fork 허용 불가 - Cannot fork because forking is disabled (0) | 2022.02.24 |
[Git] 인텔리제이(IntelliJ) 깃 관련 플러그인 - GitToolBox (0) | 2022.02.15 |
[Git] PR(Pull Request) local로 가져오기 (0) | 2022.02.06 |
Comments