[errors] git 사용중 꼬였을 때…
최근 cafe 24 와 협업을 하면서, 새로운 상품연동 페이지를 제작중에 있었다. 그런데 내가 실수로 main branch에 작업을 하고있었다… 다행이도 fork 해온 나의 레포에서 작업이 되었지만, 이전으로 되돌리기에는 다른사람의 commit 도 있었고 , 너무 많은 commit 을 되돌려야 했다.
실수는 반복될 수 있다. 해결방법을 작성하자.
커밋내용 확인하기
1
git log
- vsCode 에서 위와 같은 명령어를 치면, 최근 커밋했던 내역을 볼 수 있다.
Q 또는 q
를 누르면 내역에서 나가진다. - 깃헙 레포지토리에 가서 commit 내역을 보면, 커밋한 내용과 해당 커밋의 해시코드를 확인 할 수 있다. 참고로 fork 한 레포에서는 커밋 revert 버튼이 보이질 않는다.
이전 버전으로 되돌리기.
커밋내용을 되돌렸다가 돌아오지 않고 아예 되돌리고 싶은 경우에도 두가지 방법이 있다. 웬만하면 revert 를 권장한다.
되돌리는 버전을 새로 커밋하기(권장 O)
git revert head ~1 혹은 git revert 커밋해시코드
- revert 명령시 해당 커밋 버전으로 새로 커밋하게 되므로, 커밋 메시지 입력창이 나타난다.
- (i 입력 후 커밋메시지 수정하기: wq 입력해서 저장 후 종료하기)
되돌리는 버전 이후의 커밋을 삭제하기(권장x)
git reset --hard head ~1
혹은 git reset –hard 커밋해시코드- 앞서 설명한 checkout. 의 두 가지 방법 모두 똑같이 reset 에도 적용 가능하다.
- 남아있는 추가되었던 파일 지우기.
나의 해결방법
커밋을 일일히 revert 할 수는 없었다. 실제로 해보니 커밋이 revert 관련 8개가 쌓여서 보기가 매우 안좋았다. 다음과 같이 처리하였다.
- 복구해야 하는 commit 으로 reset 한다.
- 로컬도 자동으로 바뀐다.
- 다시 upstream main 브랜치를 pull 해온다.
- 나의 레포 origin main 에다가 push 한다.
참고
https://mintaku.tistory.com/12 https://velog.io/@malgo/commit%EC%BB%A4%EB%B0%8B-%EB%82%B4%EC%97%AD-%EC%A7%80%EC%9A%B0%EA%B8%B0