git: revert_버전 되돌리기

영가이·2024년 6월 29일

FrontEnd

목록 보기
3/7
post-thumbnail

도움 받았던 링크와 시작합니다.
revert 설명: https://taylog.tistory.com/66

사실 push + commit은 손풀기로 작성했고
이번 과제에서 절 울고 웃게 만들었던 기능 revert에 대해 다룹니다.

이 기능을 알게된 배경은 로그인/로그아웃을 구현하면 코드의 전체에 막 뭘씌우고 그러잖아요,,? 신나게 한달전에 실습하고 이번주에 과제하려 블로그를 열어보니 서버의 응답을 받지 못하는 것이 아니겠습니까...?
이래저래 테스트해보니 서버는 잘돌아가고,,, 망한건 내 포트폴리오뿐....
한 이틀삼일 꾸준히 건드려봐도 차도가 없었고 어떡하지 암담하던 참에 꿈에서 코딩을 하며 떠오른 생각

이러려고 깃허브 쓰지

당장 버전 복구하는방법 찾아서 버전을 돌렸습니다.
처음엔 잘되길래 다되는줄 알았지만 이것도 충돌이 꽤 빡세더군요.
충돌 빈도만 따지면 한문철티비 한번 나갈 수 있었음.

이에 대한 기록을 올립니다.

revert 하는법

깃허브에서는 버전을 되돌리는 revert와 reset이 있다.
reset은... 도움받은 사이트에도 나와있지만 비추천하는게
공유 받은 시점 이후의 기록이 날아간다고 한다. 무서워서 써보지도 않음ㅎㅎ
revert의 예시와 함께 확인하도록하자.

쭉 커밋했다 돌이킬 수 없어진 6/26 기점으로 난 버전을 돌리기로 마음먹었다. revert하는 법은 간단하다!

git revert 970b어쩌고해시짱긴거

위의 사진에서 복사 버튼이 있는 알파벳과 숫자들이 보이나요?
그걸 복사해오면 엄청 긴 해시숫자를 가져올 수 있는데 이를 revert 옆에 붙이면된다. 그러면 저 시점의 버전으로 내 코드들이 돌아간다!

이렇게 했을 때 reset과 차이점은 revert는 내가 6/3에 올린거 이후로도 체크리스트 작성, 업데이트 검토 등 돌아가고 싶은 부분으로 돌아갈 수 있지만
reset은 이후의 기록이 날아간다는 점이 다른 것 같다

하지만 충돌이 없으면 깃이 아니지
신나게 사고를 치다가 아 다시 돌아가야지 하니 다음처럼 충돌이 일어나면서 병합이 되지 않는 것이다..

대충 나의 과오를 돌아보자면

  • 이미 abort를 통한 강제 병합을 했으며
  • 여러번의 revert로 버전이 깨져 충돌이 생겼다
    ㅎㅎㅎㅎ
    두가지의 해결 방법을 거쳤다.

1. abort로 일단 병합하기

참고로 이 방법은 협업중인 코드면 정말 조심해야한다.
커밋하지말고 abort만 해서 어디서 충돌이 일어나는지 눈으로 체크해볼 수 있다.

git revert --abort

나같은 경우는 개인 프로젝트기 때문에 보고 충돌을 확인할 수 있었다.
app.js를 크게 건드려놓고 수정사항이 반영되지 않았던거, 충돌나는 부분에 head나 ===같은게 들어가서 syntax에러나는 부분을 눈으로 보고 일일히 처리했다.

충돌나는 지점에 ===이나 head >> 이런게 생기던데 아마 깃허브에서 insert된 부분과 remove된 부분이 호환되지 않게 되면서 깃허브에 저장된 그대로 가져오게 되어 생기는 오류 같다.
아무튼 저걸 눈으로 보며 일일히 제거해서 1차 큰 불을 껐다.

참고로 이 상황을 마주했다면 add . -> push -> commit을 계속해도 굴레에 빠질 수 있는데 그냥 GPT고 뭐고 속시원히 눈으로 디버깅해보는 것도 방법이라고 생각한다...ㅎㅎ

2. 원하는 버전 코드 손수 복붙하기(!)

app.js 는 해결됐지만 여전히 api 연결은 정신을 못차리는 나의 블로그...
고민하다가 그냥 깃허브에서 돌아가고 싶은 시점의 커밋에 들어가 일일히 복붙했다.
물론 코드가 길면 절대 안될 방법이지만...

이런식으로 코드가 뜰텐데
하얀색 : 변동없던 코드
빨간색 : 제거된 코드
초록색 : 변동된 코드 or 추가된 코드
-> 초록색과 하얀색을 골라 복붙해주기

나중에 내가 개발 고수가 되면 안해도될지 모르지만
사실 당장의 상황을 모면하는 데에는 큰 도움이 되었다.

물론 이렇게하면 단점이 버전관리가 깨진 것과 다름 없다는 점.
이 시점부터 다시 버전관리를 이어나가며,,, 고쳐가야한다 ㅎㅎ

사실 나는 이제 zustand사용하고 코드 갈아엎어볼거기 때문에 또 이럴거 같기 때문에... 기록해두는 것이다!

아날로그가 때로는 해답일 수도 있..나? 아무튼 이렇게 깃허브를 깃답게 써보는 경험을 기록해본다.
과제 어떡하냐
더불어 업로드로 파일을 올리더라도 커밋메시지를 꼬박꼬박써서 버전관리를 유사하게 할 수 있도록 하면 좋을 것 같다.
종합설계할 당시 코랩을 사용했기 때문에 맨날 다운받아서 업로드했는데 readme랑 커밋메시지를 꼼꼼히 써서 버전 돌릴 때 꽤 편했던 기억이 난다.

아무튼 글 끝! 깃허브에 대해 느낀 바가 있으면 또 오겠습니다~~

profile
어문과 개발. 융합형인재 호소인.

0개의 댓글