작성자를 바꾼다는 커밋 기록 없이 이전 커밋들의 작성자를 바꿀 수 있을까?
ChatGPT
작성자를 바꾸지 않은 상태에서 이전 커밋들의 작성자를 변경하는 것은 git rebase
와 git filter-branch
명령어를 사용하여 가능합니다. 다만, 이 방법은 기록을 덮어쓰므로 신중히 사용해야 합니다. 예를 들어, 전체 기록을 변경하는 git filter-branch
를 사용하는 방법을 설명드리겠습니다.
git filter-branch
를 사용하여 작성자 변경작업 브랜치 생성 (optional): 작업 도중 문제가 발생할 것을 대비해 새로운 브랜치를 생성합니다.
sh코드 복사
git checkout -b rebase-author-change
작성자 변경 명령어 실행:
git filter-branch
명령어를 사용해 전체 히스토리의 작성자 이름과 이메일을 변경합니다.
sh코드 복사
git filter-branch --env-filter '
OLD_EMAIL="[email protected]"
CORRECT_NAME="New Name"
COR
4o
아니 커밋 기록의 작성자를 바꿀건데, 바꾼다는 기록이 커밋에 안남았으면 해
ChatGPT
네, 작성자를 바꾼다는 커밋 기록을 남기지 않고 이전 커밋들의 작성자를 변경하려면 git filter-repo
라는 도구를 사용할 수 있습니다. 이 도구는 git filter-branch
보다 더 안전하고 빠른 방법을 제공합니다. git filter-repo
를 사용하여 작성자를 변경하는 방법을 설명드리겠습니다.
git filter-repo
를 사용하여 작성자 변경git filter-repo
설치:
먼저, git filter-repo
를 설치합니다. git filter-repo
는 최신 Git 버전에서 사용 가능한 도구로, 아래 명령어를 통해 설치할 수 있습니다.
sh코드 복사
pip install git-filter-repo
저장소 백업: 작업 도중 문제가 발생할 것을 대비해 저장소를 백업합니다.
sh코드 복사
cd your-repo
git clone --mirror . ../your-repo-backup
작성자 변경 스크립트 작성: 작성자를 변경하기 위한 스크립트를 작성합니다. 예를 들어, 아래와 같은 스크립트를 사용합니다.
sh코드 복사
git filter-repo --replace-text <(echo '[email protected][email protected]')
작성자 변경 실행: 스크립트를 실행하여 작성자를 변경합니다.
sh코드 복사
git filter-repo --commit-callback '
if commit.author_email == b"[email protected]":
commit.author_name = b"New Name"
commit.author_email = b"[email protected]"
if commit.committer_email == b"[email protected]":
commit.committer_name = b"New Name"
commit.committer_email = b"[email protected]"
'
위 작업은 저장소의 전체 히스토리를 변경하므로, 작업 전 백업을 꼭 해두는 것이 좋습니다.
히스토리가 변경되면 기존의 커밋 ID가 모두 변경되므로, 이 저장소를 사용하는 다른 사람들과의 협의가 필요할 수 있습니다.
원격 저장소에 force push가 필요합니다.
sh코드 복사
git push --force