[GIT] GitHub 잔디 누락 현상 및 해결 방법

문제

GitHub에 2023년 1월 2일 ~ 2023년 1월 5일까지 push 했음에도 잔디가 누락되는 현상 발생했습니다.

 

나의 사막 잔디
소중한 내 잔디 ;(

 

소중한 잔디를 다시 잃을 수 없기에 해결방법과 복구한 방법을 정리했습니다.

 


원인

 

저는 GitHub 계정에 등록되어 있는 이메일 계정과 local 환경 이메일 설정이 다른게 원인이었습니다.

(다양한 원인이 있습니다.)

 

 


해결방법 

Local email 정보 변경 🔨

 

1. git 설정 리스트 확인

git config --list

 

2. user.email 과 GitHub 등록된 이메일 확인

확인해보니 

누구세요?

3. email 설정 변경

git config --global user.email "변경email"
git config --global user.name "변경name"

 

 


잔디 복구하기🌄

잔디 복구 하기 전 위의 해결방법, email, name 정보를 변경해야됩니다.

 

 

1. git Log 확인

git log

 

2. 해쉬 코드 찾기

 

git log --pretty=format:"%h = %an , %ar : %s" --graph

 

3. 해쉬 코드 찾아서 접속

git rebase -i 해쉬코드^

 

 

4. i (input 모드)을 눌러서 접속

 

변경할 이메일 commit 목록에서 pick -> edit로 변경

esc를 눌러 input 모드를 빠져나와 :wq 를 입력하여 저장

 

5. 변경할 username과 email를 입력한 후, :wq 를 입력하여 나옵니다.

git commit --amend -author "변경할 이름 <변경할 이메일>"

 

 

6. rebase continue를 입력하여  변경할 커밋할 내용들을 넘겨줍니다.

(저는 변경할 내용이 14번이라 14번 반복했습니다.)

git rebase --continue

 

7. 강제 push를 하여 이름과 이메일 변경 완료 

 

branch 앞에 +를 붙여 강제로 push 할 수 있도록 합니다.

git push <remote> +<branch>

+를 붙이지 않을 경우
+를 붙일 경우

 

 

 

🤸‍♀️사막에 잔디가 살아났습니다🤸‍♂️

 

 


Git Log name과 email 변경하는 법

Git 잔디를 복구하기 위해 여러 곳을 탐방하다가

Git Log 내역에서 name과 email를 변경할 수 있는 좋은 코드를 발견해서 기록해놓습니다.

$ git filter-branch --env-filter '
WRONG_EMAIL="변경전 email"
NEW_NAME="변경할 name"
NEW_EMAIL="변경할 email"
 
if [ "$GIT_COMMITTER_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_COMMITTER_NAME="$NEW_NAME"
    export GIT_COMMITTER_EMAIL="$NEW_EMAIL"
fi
if [ "$GIT_AUTHOR_EMAIL" = "$WRONG_EMAIL" ]
then
    export GIT_AUTHOR_NAME="$NEW_NAME"
    export GIT_AUTHOR_EMAIL="$NEW_EMAIL"
fi
' --tag-name-filter cat -- --branches --tags