4시간 동안 git 잔디 복구를 하였다...

eggMun·2023년 4월 25일
0

https://velog.io/@eggmun/%EC%9E%94%EB%94%94%EA%B0%80-%EB%88%84%EB%9D%BD%EC%9D%B4-%EB%90%98%EC%97%88%EB%8B%A4
~이전 글 참고~

10일동안 git을 복구하려고 git에 계속 문의를 보냈다.
드디어 오늘 문제의 원인을 알게 되었다.


해석을 해보자면 지금까지 깃에 등록된 이메일에 따옴표로 감싸져 있어서 문제가 발생했다는 거였다.......

그래서 바로 git confing --list로 확인을 하였는데 진짜로 따옴표로 감싸져 있었다.......
이게 문제였다니... 진짜 사소한 문제였었다.


그리고 바로 git config --gloabla user.email 명령어로 따옴표 없이 이메일을 등록하였다.

하지만 전에 등록했던 커밋에는 따옴표가 감싸져 있는 이메일이 등록되어 있기 때문에 잔디가 등록이 안된다.
그래서 그것을 해결하기 위해 4시간 동안 계속 git을 만졌다.

git filter-branch --env-filter `
OLD_EMAIL="이전 이메일 주소"
CORRECT_NAME="정확한 이름"
CORRECT_EMAIL="새로운 이메일 주소"
if [ "GITCOMMITTEREMAIL"="GIT_COMMITTER_EMAIL" = "OLD_EMAIL" ]
then
export GIT_COMMITTER_NAME="CORRECTNAME"exportGITCOMMITTEREMAIL="CORRECT_NAME" export GIT_COMMITTER_EMAIL="CORRECT_EMAIL"
fi
if [ "GITAUTHOREMAIL"="GIT_AUTHOR_EMAIL" = "OLD_EMAIL" ]
then
export GIT_AUTHOR_NAME="CORRECTNAME"exportGITAUTHOREMAIL="CORRECT_NAME" export GIT_AUTHOR_EMAIL="CORRECT_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags

처음에는 위에 명령어로 이메일을 바꾸려고 했는데 이메일이 바뀌지가 않았다...
그래서 다른 방법을 찾아보았는데 git filter-repo을 이용한 방법이 있었다.

git filter-repo --email-callback '
if email == “eggmun”98@gmail.com:
return eggmun98@gmail.com
else:
return email
' --force

위에 방법은 git filter-repo 방법이다. filter-branch는 이제 권장하지 않는 방법이라서 git filter-repo을 권장하는데 이것을 이용해도 이메일이 바뀌지가 않았다...

그래서 결국은 또 다른 방법을 찾았다. git rebase를 이용하는 방법이다. 이 방법을 익히는데 시간을 많이 썼다.

먼저 git log를 통해서 해쉬코드를 알아본다. 나는 확장 프로그램으로 바로 해쉬코드를 알아냈다.

이제는 git rebase -i "해쉬코드" or git rebasse HEAD~"숫자"
이 명령어를 치게 되면

이 화면이 나오게 된다.

바꿀 커밋을 pick에서 edit로 바꿔 준다.


그리고 컨트롤 + o를 누른다.
그러면 저런 화면이 나오는데 컨트롤 t를 누르면 된다.

그리고 저장할 파일을 골라야 하는데 git-rebase-todo를 선택하면 된다. 선택은 엔터키를 눌러서 할수 있다.

그러고 나서 다시 이전 화면으로 나와지는데 컨트롤 + x를 눌러 밖으로 나가준다.
그리고 git commit --amend --author="userName User@Email.com" 이 명령어를 입력해서 이메일을 바꿔 준다.

그러고 이런 창이 다시 뜨는데 아까 처럼 파일을 저장해야 한다. 컨트롤 t를 눌러서 들어간다.

그 다음에는 저장할 파일을 골라야 하는데 commit_editmsg를 선택해서 엔터를 누른다.
그리고 다시 컨트롤 x를 누르면 바뀐 이메일로 저장이 된다.
그 다음에는 git rebase --continue 명령어를 입력하여 다음 커밋 내용을 작업할 수 있다.
즉 git rebase --continue 명령어를 입력하고
git commit --amend --author="userName User@Email.com" 이 명령어를 또 입력해 주면 그 커밋의 이메일을 바꿀 수 있다.
이렇게 반복 작업을 해주면 된다.

이 화면이 나올때 까지 git rebase --continue 를 입력해 주면 된다.
마지막으로 작업을 다 했으면 git push origin +main으로 강제 푸쉬를 해주어 바뀐 이메일을 원격 저장소에 저장을 한다.

요약
1. git rebase -i 해쉬코드 입력
2. git commit --amend --author="userName User@Email.com" 입력
3. git rebase --continue 입력
4. 2번과 3번 작업을 반복
5. git push origin +main 입력으로 끝

오늘의 교훈
진짜 사소한 실수 하나로 3~4개월 간의 커밋이 잔디에 기록되지 않았다. 앞으로는 사소한 실수를 하지 않게 꼼꼼하게 확인을 해야겠다. 그래도 git에 대한 공부를 많이 하게되었고, 문제를 해결하였으니 보람찬 하루였다.

profile
블로그 이전: https://eggmun98.tistory.com/

0개의 댓글