Notice
Recent Posts
Recent Comments
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Chimy's Program

GIT Rebase Conflict 본문

GIT

GIT Rebase Conflict

chimy 2020. 4. 25. 22:05

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
Comments