혼자 코드 작업을 해보려고 하다가 문득 호기심
이 생겼다.
매일 CLI(Command Line Interface)
만 쓰던 나에게 GUI(Graphical User Interface
도 써봐야지 하지 않을까... 하는 마음에서 생긴 호기심!
하지만 그 호기심은... 재미있는 경험이었고(하지만 성공적(?)으로 사용하지는 못했다 ^^;;) 드디어 단 한 번도 사용하지 않으려고 했던 cherry-pick을 드디어 사용하게 됐다.
GUI의 사용은 VScode를 기반으로 사용했다.
git-github를 활용해서 커밋을 진행하려고 했고 그 커밋이 github에서 정상적으로 push, merge되기 위한 방법을 하나하나 진행했다.
그리고 커밋도 해보고 revert도 해보고 reset도 해보려는 여러 시도를 해보았고
하지만 결과는...
git flow가 꼬이기 시작했다.ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
.env로 설정해놓았던 node_modules 파일이 github로 push를하게 되는 상황까지 발생했다... 이를 어쩌지... reset을 해도 내가 작업했던 코드는 돌아오지 않았다...
하지만 빼앗긴 들에도 봄은 오지 않는가.
여기서 생각해보니 돌이킬 수 있는 방법이 하나 있었다.
단 한번도 사용하지 않았던(대부분 엄청난 고심(?)끝에 git의 명령을 사용했던 터라 특정 브랜치의 특정 커밋을 사용할 일이 없었다.) cherry-pick을 사용하게 됐다.
여기서 cherry-pick을 사용하는 전제는 기존에 작업했던 내용이 커밋으로 남아있어야 한다는 것
이다.
$ git log 또는 $ git reflog
이렇게 로그로 확인하고 그 커밋을 복사한다.
$ git branch {생성 브랜치이름}
$ git checkout {생성 브랜치 이름}
$ git cherry-pick {커밋번호 또는 브랜치 이름}
그러면 작업내용이 뙇! 하고 생기게 된다.
참고 : git cherry-pick은 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어입니다. rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다. 다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야합니다. cherry-pick은 같은 내용을 같고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다.
참고하면 좋은 블로그 : https://brownbears.tistory.com/606