-
[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
반응형'Github 사용법' 카테고리의 다른 글
[Github] 브랜치 복구하기 (3) 2021.09.08 [Github / MAC] 원격 브랜치 삭제하기 (deleter remote branch) (0) 2021.04.22 [Github] 프로필(overview) README.md 꾸미기 [2] (0) 2020.10.06 [Github] 프로필(overview) README.md 꾸미기 [1] (2) 2020.10.06 [Github] Cherry-pick으로 다른 브랜치 commit을 원하는 브랜치로 옮기기 (1) 2020.09.07