[Github] 잘못된 브랜치에 push했을 때(1) cherry-pick

2022. 9. 27. 01:32Record/에러

    상황

    팀원들과 프로젝트를 진행하며 협업툴로 Github를 사용하고 있다. 브랜치를 master, develop, 구현할 feature 브랜치로 나뉘어 각자의 feature 브랜치에서 작업을 진행한다.

    나는 TCP-22-가나다라마바사라는 브랜치에서 작업을 진행하고 push를 했다. 팀원분께서 develop이 아닌 master에서 가져온 것 같다고 slack으로 연락주셔서 develop 브랜치에서 브랜치를 생성하고 커밋을 옮기고자 하였다. 이 과정에서 나는 2가지 상황에 부딪혀 수많은 시행착오를 반복했다. 문제를 제대로 파악하고 틀리지 않기 위해 정리를 해보도록 하자. 이번 글에서는 커밋을 다른 브랜치로 하려면 어떻게 해야했을지 알아보자.

    우선 잘못된 상황은 다음과 같다.

    1. TCP-22로 올라가있어야 할 push가 develop으로 push 되었다.
    2. reset 과정에서 기존에 있던 commit을 reset해버렸다.
    그 당시 내 심정
    수많은 실수

    원인

    나는 다른 브랜치로 옮기기 위해, 커밋을 따로 복사해놓고 develop 브랜치에 잘못 push된 커밋을 reset하려고 했다. 하지만 그 과정에서 잘못된 reset을 사용하여 문제가 발생했다. 이 과정에서 생긴 문제는 추후 다른 글에서 설명하도록 하겠다.

    해결법

    그렇다면 이 커밋 자체를 다른 브랜치로 옮기는 방법은 어떤 것이 있었을까?

    이번 상황에서는 적용해보지 못했지만, git cherry-pick이 있다. 이 cherry-pick은 원하는 브랜치의 해당 커밋 내용만 반영할 수 있도록 해준다.

    git log 혹은 git reflog를 사용하면 숫자와 알파벳으로 조합된 형태를 볼 수 있는데, 이를 커밋 해시라고 한다.

    왼쪽 상단의 노란 글씨!


    git cherry-pick {커밋 해시}를 입력하게 되면 내가 원하는 커밋을 새로운 브랜치로 가져오게 됩니다!

     

    이번이 스터디원분들과 함께 하는 3번째 프로젝트인데, 여전히 github는 어렵네요... 그렇지만 한 번한 실수를 다음에 안하면 되겠죠! 실수하고 되돌릴 수 있는 기회가 있음에 감사합니다 휴휴

    깃허브하면서 만나는 많은 상황 잘 정리하기....메모...

     

     

    맨 위로
    // //