티스토리 뷰

개념

git merge conflict 해결

상어악어 2022. 3. 21. 21:40
반응형

 

merge conflict의 상황을 만들기위해

git clone을 해주고

폴더를 만들어주고

이동한 후

git init을 통해 

.git폴더를 만들어준다

 

 

 

시나리오는 이렇다

master 브랜치에서 a.txt, b.txt, c.txt를 만들고

hobin 브랜치, yohan브랜치를 만들고

b.txt를 각각 수정한 후,

다시 hobin -> master

yohan -> master로 merge할것이다

그러면 b.txt를 다르게 수정해서 conflict가 날것이고 이걸 해결하도록 해보겠다

 

요즘은 master브랜치말고 main브랜치라고한단다

흑인 인종차별 이슈때문에

 

 

그다음 vim명령어를 통해

a.txt를 만들고

 

 

 

 

i를 눌러 입력모드로 전환한 후

내용입력후

esc를 누르고

:wq를 눌러 저장하고 나온다

 

 

 

 

 

a.txt, b.txt, c.txt를 마찬가지로 만들어준다

 

 

그리고 commit을 해준다

 

 

hobin, yohan브랜치를 만들어준다

 

 

 

yohan 브랜치의 b.txt의 내용을 변경해준다

 

그리고 커밋

 

 

yohan도 마저 해준다

 

그러면 일단 hobin -> master로 merge해보겠다

우선 git checkout master한다음

git merge hobin

 

 

 

 

그다음

yohan브랜치 merge를 해보자

git merge yohan

 

 

그러면 예상대로 b.txt에서 merge conflict가 발생했고,

auto-merging이라고 뜬다

 

 

 

이제 vscode로 test폴더를 열어보자

 

요즘 툴에서는 어디서 conflict가 나는지 표시해준다

내용이 달라서 충돌이나고 있고,

HEAD와 yohan브랜치에서 충돌이난다

 

HEAD란 현재 체크아웃한 브랜치의 가장 최신 커밋

가장 최근에 체크아웃한 브랜치는 master이므로

HEAD는 master이다

 

conflict해결은

사용자가 직접한다

어떤 부분을 살릴거고,

지울건지 정한 후 저장한다

나는 HEAD부분을살리고

yohan을 지우겠다

 

 

 

 

 

 

저장한 후 

git bash로 돌아와

git add한 후, git commit을 해주면

 

 

master브랜치에서 b.txt를 확인해보자

 

 

 

hobin version으로 잘 저장된 것을 확인할 수 있다

반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
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
글 보관함