Chimy's Program
GIT Rebase Conflict 본문
GIT Rebase Conflict
Rebase 사용 중 충돌 해결
common.txt에 1을 작성하고 버전 생성
topic 브랜치를 생성한다
master 브랜치에서 common.txt에 m2, m3 추가 후 각각 버전 생성
topic 브랜치에서는 t2, t3, t4 추가 후 각각 버전 생성
rebase 시 반드시 덧붙일 branch로 checkout하고
rebase 명령어 뒤에는 덧붙여질 branch를 적어야 한다
rebase하게 되면 부모가 될 topic branch와 master branch의 common.txt이
같은 부분이 수정됐기 때문에 충돌이 발생한다
master 브랜치에서 작업했던 것들을 하나하나 topic 브랜치 뒤로 옮기기 위해서
head가 topic으로 이동한 것을 볼 수 있다
충돌을 해결하기 위해 mergetool을 이용합니다
기본 mergetool로 설정한 p4merge가 열렸습니다
1번째 줄은 모두 같으므로 1
2번째 줄은 m2와 t2가 충돌하기 때문에 해결해야한다
충돌을 수정한 다음 저장 후 종료
mergetool을 사용하니 add까지 된것을 확인할 수있고
머지도구를 이용하지 않고 직접 충돌해결 시 add 명령어까지 수행해야한다
common.txt.orig는 충돌을 병합한 후에 문제가 있을 시 되돌릴 수 있도록 제공하는 파일로
필요없다면 지워도 된다
충돌이 해결됐으니 다시 rebase를 이어한다
git이 먼저 성공적으로 충돌이 해결된 버전의 commit 메세지를 요청한다
알맞게 적고 종료한다
그 후 계속 rebase하다가 다음 버전에서 충돌이 발생했으면
git은 다시 충돌해결을 요청한다
Head는 우리가 새롭게 만든 버전으로 이동된 것을 볼 수 있다
mergetool을 이용해 충돌을 해결하자
각 줄을 비교하여 어떤 버전의 코드를 채택해야 하는지 생각하고
수정한 다음 저장 및 종료
적절히 수정한다
수정한 파일이 staging area에 올라가 있다
rebase 마저 실행
commit 메세지 작성 후 종료
rebase가 성공적으로 완료되어 master 브랜치의 위치도 변화했다
rebase는 강력하지만 까다로운 도구로 정확히 파악하고 사용하도록 하자
'GIT' 카테고리의 다른 글
Git Bash 기본 시작 위치 바꾸기 (0) | 2020.10.02 |
---|---|
GIT Rebase로 log 정리하기 (0) | 2020.04.28 |
GIT Cherry-Pick Conflict (0) | 2020.04.24 |
GIT Rebase (0) | 2020.04.22 |
GIT Cherry-Pick (0) | 2020.04.19 |