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

여리·2023년 8월 29일
0

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

매일 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개의 댓글