git rebase 를 수행하는데 conflict 가 발생한 경우에 해결 하는 절차를 적어본다.
우선 S project 라는 가상의 프로젝트에 A~J 까지 10개의 commit 이 있는 master branch 가 있다고 가정한다.
E 에 해당하는 commit 소스를 가지고 새로운 new_branch 이라는 local branch 를 만들어서 또다른 commit 작업을 수행했다고 가정한다. 새로 수행된 commit 은 K, L, M 이라고 하자 그럼 commit 된 내용을 그림으로 그려보면 아래와 같다.
이런 상황에서 G commit 시점으로 나의 branch 를 rebase 하고 싶은 경우, 즉 그림상으로 다음과 같은 상황을 원하는 경우에 rebase 라는 명령을 사용한다.
이때 git 명령은 다음과 같이 수행한다. 우선 현재 local branch 가 new_branch 인지 확인 한다.
new_branch 가 아닌 경우에 new_branch 로 이동한다.
이후 G commit 으로 rebase 한다.
이때 충돌없이 rebase 가 되면 다행이지만, conflict 가 발생하게 되면, conflict 를 해결하고 진행해야 한다.
우선 conflict 가 발생한 파일을 수정하나서 git add 를 사용하여 수정된 파일을 index 에 추가한다.
그런 후에 git rebase 명령을 다시 수행해준다. git rebase 로 충돌이 발생하게 되면, 현재 local 상태는 (no branch) 상태로 존재하게 된다. 따라서 반드시 git rebase 명령으로 conflict 를 해제하고 계속 진행하거나(--continue), 취소하여야(--abort) 한다.
이렇게 되면 new_branch 가 정상적으로 G commit 을 base 로 branch 된 것으로 수정된다.
우선 S project 라는 가상의 프로젝트에 A~J 까지 10개의 commit 이 있는 master branch 가 있다고 가정한다.
E 에 해당하는 commit 소스를 가지고 새로운 new_branch 이라는 local branch 를 만들어서 또다른 commit 작업을 수행했다고 가정한다. 새로 수행된 commit 은 K, L, M 이라고 하자 그럼 commit 된 내용을 그림으로 그려보면 아래와 같다.
K--L--M : new_branch
/
A--B--C--D--E--F--G--H--I--J : master
/
A--B--C--D--E--F--G--H--I--J : master
이런 상황에서 G commit 시점으로 나의 branch 를 rebase 하고 싶은 경우, 즉 그림상으로 다음과 같은 상황을 원하는 경우에 rebase 라는 명령을 사용한다.
K--L--M : new_branch
/
A--B--C--D--E--F--G--H--I--J : master
/
A--B--C--D--E--F--G--H--I--J : master
이때 git 명령은 다음과 같이 수행한다. 우선 현재 local branch 가 new_branch 인지 확인 한다.
# git branch
new_branch 가 아닌 경우에 new_branch 로 이동한다.
# git checkout new_branch
이후 G commit 으로 rebase 한다.
# git rebase G new_branch
이때 충돌없이 rebase 가 되면 다행이지만, conflict 가 발생하게 되면, conflict 를 해결하고 진행해야 한다.
우선 conflict 가 발생한 파일을 수정하나서 git add 를 사용하여 수정된 파일을 index 에 추가한다.
그런 후에 git rebase 명령을 다시 수행해준다. git rebase 로 충돌이 발생하게 되면, 현재 local 상태는 (no branch) 상태로 존재하게 된다. 따라서 반드시 git rebase 명령으로 conflict 를 해제하고 계속 진행하거나(--continue), 취소하여야(--abort) 한다.
# git rebase --continue
이렇게 되면 new_branch 가 정상적으로 G commit 을 base 로 branch 된 것으로 수정된다.
'IT 기술 > 개발환경_유틸 관련 팁' 카테고리의 다른 글
[gcc] floating point ABI 에 대해서 (0) | 2012.11.06 |
---|---|
[git] git checkout 에서 '--' 의 의미 (0) | 2012.11.06 |
Alignment Error 와 메모리/구조체 (0) | 2012.01.06 |
screen multi-user mode error: Must run suid root for multiuser support (0) | 2011.05.12 |
awk 로 substr 뽑아내기 (0) | 2011.02.09 |