브랜치를 새로 생성하지 않고 master 브랜치에서 계속 커밋했다.
master를 원래대로 돌리고 새 브랜치에 커밋을 옮기기 위해서 cherrypick 명령어를 사용해봤다.
일단 커밋을 옮길 브랜치(calculator) 생성하고 체크아웃 한다
git checkout -m calculator
옮겨올 커밋의 id값을 열거한다
커밋id^..커밋id를 통해 해당 범위 내 커밋이 모두 복사할 수 있다
git cherry-pick Acommit Bcommit //열거한 커밋 A,B만 복사
git cherry-pick Acommit^..Ncommit //A~N 까지 범위로 복사
다시 mater로 돌아와서 잘못 올린 커밋들을 하드 리셋시킨다.
reset에는 세 종류가 있다. 여기서 수정사항까지 다 날릴 것이기 때문에 hard를 선택한다.
soft: 커밋 취소O, 스테이징O, 수정사항 보존O
mix(기본옵션): 커밋 취소O, 스테이징X, 수정사항 보존O
hard: 커밋 취소O, 스테이징X, 수정사항 보존X
HEAD^ : 최신커밋 삭제
HEAD^~N : 최신커밋 N개 삭제
git checkout master
git reset --hard HEAD^
git reset --hard HEAD~3 //최신 커밋 3개 취소
첫 커밋부터 잘못 올라갔는데 이부분은 다르게 처리한다
git update -ref -d HEAD //HEAD가 가리키는 해시값 업데이트(초기화)
git rm --cached -r .
git push -f origin master //강제 원격 저장소 push