macOS 에서 작성 및 커밋했던 이력의 작성자 한글 분리 현상이 거슬려서 영문 이름을 쓰기로 했다. 하지만 이미 푸시된 과거의 이력들.. 결국 전체 이력에서 작성자 정보만을 변경하기로 결정하고 폭풍 구글링으로 방법을 찾았다. 나중에 또 필요할지 몰라서 내가 필요해서 하는 기록.
(!) 참고 : 이 방법은 rebase
및 filter-branch
명령어를 사용하므로 기존과 다른 branch
이력이 만들어집니다. 따라서 이력 수정 후 완전히 달라진 branch
를 강제로 밀어넣기가 불가능할 경우에는 적용하지 않는 것을 권고합니다.
git log --pretty='%ct %at %s' --all > ../hashlog
<revision-range>
형태로 입력하면 된다.BASE..HEAD
GIT_AUTHOR_EMAIL=lina@aterilio.kr git rebase --root -x "bash -c 'git commit --amend --reset-author -CHEAD --date=\"\$(git show --format=%ad -s)\"'"
"Lina <lina@aterilio.kr>"
)로 입력했더니 중복된 정보(Lina <Lina lina@aterilio.kr>
)로 저장됨name : Lina / email : lina@aterilio.kr
로 저장되어 있을 때 lina@aterilio.kr
만 입력해도 Lina <lina@aterilio.kr>
로 표기됨git filter-branch --env-filter '__date=$(__log=$(git log -1 --pretty="%at %s" $GIT_COMMIT); grep -m 1 "$__log" ../../../hashlog | cut -d" " -f1); test -n "$__date" && export GIT_COMMITTER_DATE=$__date || cat'
../hashlog
로 저장 > 3번에서 ../../../hashlog
로 지정해야함filter-branch
역시 커밋 내역을 변경할 수 있는 명령어 이므로 매우 주의해서 사용 필요!! git push origin -f master
git push [remote_repo] -f [remote_branch]
출처
--committer-date-is-author-date
옵션은 제대로 동작하지 않음덧.
# case1. root 부터 선택
git rebase -i --root
# case2. 특정 커밋부터 선택
# git rebase -i {변경할 커밋의 해시값}^
git rebase -i 629dae1^
pick
-> edit
으로 수정 후 저장edit
으로 수정)한 commit 들의 rebase 를 아래와 같이 진행# 수정할 내용 작성
git commit --amend --author="Lina <lina@aterilio.kr>"
# 다음 항목으로 이동
git rebase --continue
git commit --amend
를 입력하면 각각의 커밋 내용이 뜨면서 커밋 내용을 수정할 수 있다.git rebase --continue
를 입력하여 다음 항목으로 진행한다.