Git 작업 내역을 다른 브랜치로 옮기기

1 minute read

image

위의 사진은 해결 후 그래프임

리워드내역 쿼리수정(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 할 수 있게 된다.

Categories:

Updated: