ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Github / MAC] 잘못된 브랜치에 커밋을 했을 때 :commit branch 옮기기
    Github 사용법 2021. 4. 16. 15:50
    여러 브랜치를 오가며 개발을 하다 보면 잘못된 브랜치에 커밋을 올리는 실수가 종종 발생하곤 한다. 당황해서 인터넷을 찾아보니 관련된 여러 글들이 있었고, 생각보다 쉽게 해결할 수 있었다. 그 내용들을 정리해보았다.

    1. 맥에서 git bash 사용하기

    윈도우에서는 폴더를 우클릭하여 git-bash를 접속했지만 맥에서는 터미널에서 git bash를 사용할 수 있다.

    먼저 터미널에 접속하여 아래 코드를 입력한다.

    brew install git

     

    그 다음 원하는 폴더로 이동한다. 

    - cd ~ : 가장 상위 폴더로 이동

    - cd 폴더명 : 폴더로 이동

    혹은 command 키를 누른 채로 폴더를 드래그 해도 된다. 

     

    2. Github desktop으로 cherry-pick 하기 (commit 복사)

    github desktop에서는 cherry-pick 기능을 제공한다. 한개의 커밋만 선택할 수도 있고 여러 커밋을 한 번에 선택하는 것도 가능하다.

     

    Cherry-pick Commit..을 누르면 선택한 커밋을 어떤 브랜치에 복사할지 선택할 수 있다.

     

    3. commit 삭제하기

    이전 브랜치에 있던 commit을 삭제하려면 reset과 revert 두 가지 방법이 있다. reset은 커밋 기록이 아예 사라지는 반면 revert는 그 커밋을 취소한 기록이 남아 여러명이 같은 브랜치에서 작업하고 있을 때 안전하게 사용할 수 있다. 만약 reset이 되지 않은 내 브랜치에서 하위 브랜치를 생성했거나 작업중이라면 그 사람의 로컬에는 이전 코드가 남아있고 푸시했을 때 코드가 다시 돌아올 수 있음을 주의해야 한다.

     

    reset 옵션

    • -soft : index 보존(add 유지, staged 상태), 워킹 디렉토리의 파일 보존(모두 유지)
    • -mixed : index 취소(add 취소, unstaged 상태), 워킹 디렉토리의 파일 보존(기본 옵션)
    • -hard : index 취소(add 취소, unstaged 상태), 워킹 디렉토리의 파일 삭제(모두 취소)

    HEAD~뒤에 원하는 만큼의 커밋 개수를 입력한다.

    git reset --hard HEAD~3

    여기까지 따라하면 내 로컬에 있는 커밋은 삭제되지만 pull을 하라는 알림이 뜬다. origin에 push 해 둔 기록이 있기 때문이다. push했던 커밋까지 삭제하려면 강제 푸시를 해야한다.

     

    4. origin에 강제 푸시하기

    아래 코드가 강제로 푸시하는 코드이다. 이 코드를 입력하면 user name과 password를 입력하라고 했다. 그리고 origin에서도 커밋이 깔끔하게 삭제되었다.

    git push origin [브랜치명] -f

     

    반응형

    댓글

Written by 나도개발자.