깃허브 커밋 내역 이슈 (feat. 잔디 누락 복구)

이명진·2023년 2월 27일
1
post-thumbnail

니꼬의 클론코딩을 진행하고 있었다. 2월 20일 부터 시작을 하고 있었는데 꾸준히 매일 매일 커밋을 하고 있었는데
잘되고 있겠지 라고 생각하며 신경을 안쓰고 있었는데 최근들어 확인해보니 커밋 내역이 하나도 안채워져있단것을 알게 되었다. (잔디가 안채워지고 있었다.. )
부랴부랴 누락을 어떻게 복구할지 검색해보니 나와 같은 분들이 많이 있던것 같다. 보면서 복구하고 있는데
작년 글이 최신인것 같아서 최근 업데이트 된 명령어들이 많아서 잘 안되는것 같고 삽질을 많이 하게 되었다.

복구 작업 내용

git config --list

명령어로 작업내용을 확인해보니 아뿔사.. 깃허브 이메일 주소와 닉네임이 확실히 달랐다..
아주 예전에 만들어둔 이메일로 깃헙 계정을 만들어서 연동할때 최근에 자주쓰던 메일로 혼동해서 사용했나보다.

부랴부랴 명령어를 통해 이메일 주소와 닉네임을 변경해주었따.

git config --global user.email "내 이메일”. 

전체 글로벌로 이름을 바꾼다.

git config user.email "내 이메일"

이 프로젝트만 이름을 변경한다.

git config --global user.name "유저이름"

변경을 완료하고 다시한번 확인해보고 커밋도 날려보니 잔디가 채워졌다.

이제 잔디 누락을 복구할 차례

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

위의 명령어를 통해 이전 커밋들을 해시 값으로 확인할수 있다.
해시 값 그다음이 닉네임 일것이다. 닉네임을 보니 깃헙과 다른 닉네임들이 채워져 있었따.

이제 캡쳐를 해주고 해시 값들로 리베이스 작업을 해주면 된다. (제일 앞에거 먼저 하면 좋다) 라고 해서 맨위에거라고 써있었는데
예전 (가장 오래된것) 부터 해주면 된다..
정리하신분이 애매하게 작성한건지 내가 잘못이해한건지.. 나는 맨 처음거 최근거부터 리베이스를 했다. 근데 리베이스가 베이스를 재지정해주는건데 최근것부터 베이스를 정해두면 오래된 순으로 갈수록 베이스가 꼬이게 될것이라 생각하고 두번째부터 생각을 바꿨다..;; 여기부터 꼬인것 같다. 리베이스 할때마다 최근에 베이스 해준것이 따라들어왔다.. (이 문제 때문에 리베이스가 안된것일 수도.. ㅠ )

git rebase -i -p 해쉬코드 

이 명령어를 사용하라고 페이지들은 나타내고 있다.

위의 명령어를 사용해보니 치명적인 오류가 등장한다.
잉…

fatal: --preserve-merges was replaced by --rebase-merges
Note: Your pull.rebase configuration may also be set to 'preserve',
which is no longer supported; use 'merges' instead

왜 오류가 뜨지 철자가 틀렸나 확인해보면서 오류 메시지를 확인해보니 더이상 pull.rebase 명령어가 사용되지 않는다고 한다.
merges를 대신 사용하라고 이해했다.

그러면 어쩌지.. 검색을 해보다가도 이 문제에 관해 해결이 잘 나오지 않았다.
pull.rebase 라고 하니 명령어에서 -p부분을 변경해볼까 생각하고 -m 으로 변경해보니 잘된다.

git rebase -i -m 해쉬코드 

이런 식으로 하면 잘 되긴 할것이다. 이제 원하는 커밋 메시지들이 나왔다.

이것을 pick을 edit 으로 변경해주면 된다고 하니 그대로 따라쳐준다

완료하고 :wq 로 저장하고 나가주면

git commit—amend 할것인지 git commit -continue 할것인지 뜰것이다.

다른 분들은 git commit -continue 를 입력해주라고 한다.
계속 입력해주고 success 가 나올 경우

git commit --amend --author="user.name<user.email>" 

블로그에 보니 이렇게 입력하라고 했는데 바보같이 그대로 입력했다. "user.name<user.email> “ 이부분에 자기 닉네임과 이메일을 작성해주면 된다.

그리고 포스 푸시 를 해주면 된다

git push origin +master

해주고 새로고침 해주니 띠용… 그대로다.
뭔가 나중에 반영되려나? 생각하면서 4~ 5개 커밋을 계속 반복적으로 변경해주면서 리베이스 해줬다.

그리고 다시 확인해보니 아직도 그대로이다..

해쳐 나간 방법

계속적인 삽질로 리베이스 값을 변경해주었다. 하지만 변함이 없길래 방법을 바꿔서 천천히 해볼까 생각했다.
(주의. 따라하실분은 글을 다보시고 따라하실것.. )

방법은 위의 순서대로와 같다. edit 까지는 그대로 해주고 git commit—amend ,git commit -continue 이 분기 부분에서

각 분기 마다 git commit --amend --reset-author 이 명령어를 써주었다.
이 명령어는 이 커밋에 사용한 신원 정보를 바꿔주는 것이다.
이미 git config --global 로 내 이름과 메일을 변경해주었으니 따로 작업은 안해줘도 될것이라고 생각했다.

각각 git commit --amend --reset-author 써주고 git commit -continue로 작업해주면 된다.

그리고 푸시해줬다.

결과를 보기 위해서 git log --pretty=format:"%h - %an, %ar : %s" 값을 쳐주고 커밋 내역들을 확인해주었다.

기존의 해시 값 다음에 닉네임 이 나오고 몇일전 인지 떳었는데 이부분에서 2분전 3분전으로 날짜가 다 변경되었다.
하지만 닉네임은 내걸로 완전히 변경할수 있었다.

그리고 대망의 잔디는 오늘 날짜로 이전 잃어버렸던 커밋 내역들이 쌓여있었다..

결과..

아직까지도 -m명령어로 변경되서 이런건지.. 아니면 내 생각대로 초반에 리베이스 설정 에러로 이런 문제가 생긴 것인지 확실할수는 없다.. 나중에 다시 이런문제가 생기면 이 글을 보고 다시 해쳐나가 보면서 연구해보도록 하겠다
일단 복구는 원하는대로 안되었고.. 이제부터라도 잔디를 잘 채우도록 신경써야겠다..

git rebase -i -p 해쉬코드 해시 코드가 지금은 안될텐데 이문제로 난관을 겪는 분들에게 도움이 되었으면 좋겠다.

profile
프론트엔드 개발자 초보에서 고수까지!

0개의 댓글