-
[Github] Cherry-pick으로 다른 브랜치 commit을 원하는 브랜치로 옮기기Github 사용법 2020. 9. 7. 15:58
문제
내가 작업하는 브랜치에 commit 해야하는데, 실수로 master 브랜치에 커밋을 했다. 두개의 master 브랜치에 있는 commit을 내가 작업하던 브랜치로 가져와야 한다.
해결 방법
backlog.com/git-tutorial/kr/stepup/stepup7_4.html
cherry-pick 을 이용하면 다른 브랜치에서 지정한 commit을 복사하여 현재 브랜치로 가져올 수 있습니다.
사용하는 상황
- 특정 브랜치에 잘못 추가한 commit을 올바른 브랜치로 옮기려고 할 때
- 다른 브랜치의 commit을 현재 브랜치에도 추가하고 싶을 때
01. Git Bash 켜기
Github과 연결 된 프로젝트 파일을 찾아간 후 마우스 우클릭, Git Bash Here을 한다.
Git Bash 창이 켜지면 내가 commit을 옮기고 싶은 브랜치로 checkout 한다. 참고로 Git Bash 창에서는 Ctrl+C(복사)가 적용되지 않는다.
git checkout branch
02. Commit code 알아내기
Github Desktop에서 History의 commit 내역을 누르면 아래 네모박스 표시된 곳에 commit code가 적혀있다.
Github Desktop이 깔려있지 않다면 웹페이지에서 확인할 수 있다. commit이 올라간 브런치로 들어가서 commits를 누른다.
현재 origin에 push를 하지 않아 commit 내역이 안 보이지만 push를 하신 분들은 commit 내역이 보일 것이다.
03. cherry-pick 하기
commit 한 개 옮기기
git cherry-pick commit
원하는 commit만 옮기기
- 띄어쓰기로 구분한다.
git cherry-pick commit commit commit
원하는 범위의 commit 옮기기
- 전자에 시작 commit(oldest), 후자에 끝 commit(latest)을 입력한다.
- 앞에 ^를 붙여야 시작 commit도 포함된다. 붙이지 않을 경우 시작 commit은 포함되지 않는다.
git cherry-pick commit^..commit
04. 잘못 올라간 브랜치 commit 삭제하기
다시 잘못 올라간 master 브랜치로 돌아가기 위해 checkout을 해준다.
git checkout branch
그 후 master에 올라가 있는 commit은 삭제해준다. 삭제할 commit (oldest)을 입력해준다. 그 이후에 있는 commit은 다 삭제된다. 위와 마찬가지로 ^를 붙이면 현재 commit까지 삭제되고, 붙이지 않으면 이후 commit들만 삭제된다.
git reset commit^ --hard
Github Desktop으로 History를 확인해보면 master에서 원하는 레포지터리로 commit이 이동된 것을 볼 수 있다.
05. 전체 코드
본 작성자는 안드로이드 개발을 공부하고 있는 학생으로 피드백 및 질문을 환영합니다. 그러나 무단복제 및 배포는 정중하게 사양하고 있으며, 참고 사이트로 링크를 남기실 때는 동의를 구해주시기 바랍니다.
반응형'Github 사용법' 카테고리의 다른 글
[Github] 브랜치 복구하기 (3) 2021.09.08 [Github / MAC] 원격 브랜치 삭제하기 (deleter remote branch) (0) 2021.04.22 [Github / MAC] 잘못된 브랜치에 커밋을 했을 때 :commit branch 옮기기 (0) 2021.04.16 [Github] 프로필(overview) README.md 꾸미기 [2] (0) 2020.10.06 [Github] 프로필(overview) README.md 꾸미기 [1] (2) 2020.10.06