[git] cherry-pick 드디어 써보다. git사용의 실패에서 체리픽을 외치다..

여리·2023년 8월 29일

혼자 코드 작업을 해보려고 하다가 문득 호기심이 생겼다.

매일 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을 사용하는 전제는 기존에 작업했던 내용이 커밋으로 남아있어야 한다는 것이다.

그래서 cherry-pick 어떻게 사용하는데?

1. 작업했던 내용의 커밋을 log로 확인하여 커밋번호를 확인한다.(체리픽은 커밋뿐만아니라 브랜치로도 사용할 수 있다.)

$ git log 또는 $ git reflog

이렇게 로그로 확인하고 그 커밋을 복사한다.

2. 복사한 커밋을 cherry-pick 명령어를 사용하여 특정 작업 내용을 불러온다.

  • 여기서 참고할 점은 체리픽하는 작업을 할 때에는 다른 브랜치의 작업과 병합해서 작업하는게 아니라면 별도의 브랜치를 생성해서 생성한 브랜치로 넘어가 작업하는 것을 권고한다.(다른 작업들과 겹치는 것에서 불편함(?)을 야기할 수 있기 때문이다.)
$ git branch {생성 브랜치이름}
$ git checkout {생성 브랜치 이름}
$ git cherry-pick {커밋번호 또는 브랜치 이름}

그러면 작업내용이 뙇! 하고 생기게 된다.

참고 : git cherry-pick은 다른 브랜치에 있는 커밋을 선택하여 내 브랜치에 적용시킬 때 사용하는 명령어입니다. rebase도 원하는 커밋을 선택할 수 있지만 현재 브랜치 위에서만 가능합니다. 다른 브랜치의 commit을 가져오고 싶다면 해당 브랜치를 현재 브랜치로 merge 후 rebase 해야합니다. cherry-pick은 같은 내용을 같고 있는 커밋을 여러개 생성하기 때문에 꼭 사용해야만 할 때 진행하는 것이 좋습니다.

참고하면 좋은 블로그 : https://brownbears.tistory.com/606

profile
beckend developer

0개의 댓글