Git 작업 내역을 다른 브랜치로 옮기기
위의 사진은 해결 후 그래프임
리워드내역 쿼리수정(DBlink삭제) - 5d20ffc
의 상태에서 새로운 프로젝트를 진행하느라
컬럼 수정 내역 반영 까지 작업을 master 에 올렸었지만 작업 중간에 기존의 프로젝트에서 작업이 된
이벤트 로그인 분리 - e5d0503
이 추가되어 master 에 섞기는 걸 방지하고 싶은 경우
다시 돌리기위해 Revert 천지로 돌려버릴 수도 있다. 하지만 그러기엔 작업한 것들이 아깝고, 어쩌피 새로운 프로젝트와 분리해서 관리를 진행해야 하니 이전 커밋들을 다른 브랜치로 이동시키는 것이 더 나은 방법이라 생각된다.
이를 위해 일단 HEAD 커밋이었던 컬럼 수정 내역 반영 - 881eb50
에서 새로운 브랜치를 만들자
git branch 1st-renewal
그럼 아래와 같은 상황이 될 것이다
1st-renewal
|
5b20ffc - 0c7d8b5 - ... - 881eb50
|
master
이후 master 가 돌아가야 하므로 reset 에 hard 옵션을 이용하여 돌아가고자 하는 곳의 이후 내용들을 지워버린다
git reset --hard HEAD~8
본 예제에서는 HEAD 로 부터 8번째 떨어진 곳에 5b20ffc 가 있었으므로 HEAD~8을 주었다.
그럼 다음과 같은 상황이 된다.
1st-renewal
|
5b20ffc - 0c7d8b5 - ... - 881eb50
|
master
이 부분에서 master 브랜치의 base를 5b20ffc 로 변경하여 가지를 만들어 준다.
git rebase -i 5d20ffc
그럼 다음과 같은 그래프가 된다
1st-renewal
|
| 0c7d8b5 - ... - 881eb50
|
5b20ffc -
|
master
여기서 master 에 테스트 용 커밋을 하면 다음과 같이 된다.
1st-renewal
|
| 0c7d8b5 - ... - 881eb50
|
5b20ffc - b308900
|
master
커밋 시
git push origin master --force
해줘야 master에서 PULL 을 받지 않고 강제로 새 커밋을 PUSH 할 수 있게 된다.