[2023.12.11] Git - Merge and Conflict

하은·2023년 12월 12일
0
post-custom-banner

실습환경 만들기

  • remote repository 생성
    : merge_project

  • local에 clone
    : git_ws로 이동
    = glt clone 주소(이름:토큰)

  • 실습환경 체크
    메인 - 서브

  • 파일 추가 후 저장
    = cd merge_project
    = cat > test.txt
    = my name is noma.
    = git add test.txt
    = git commit -m 'create' test.txt

  • branch 생성 후 ㅍ파일 수정
    = git checkout -b dev
    = cat >> test.txt
    = are you?
    = cat test.txt
    = git commit -m 'modify1' test.txt

  • git log 확인
    = git log

- Merge Tool 설정

  • git configuration 파일 열기
    = git config --global -e
  • git merge 설정 추가
[merge]
	tool = vscode
[mergetool 'vscode']
	cmd = 'code --wait $MERGED'

- Merge

- git merge

- 현재 위치한 branch에 다른 branch를 병합

주종관계가 있어서 '~에, ~를' 이 중요함

= git merge <branchname> = 다른 브렌치 이름을 넣어줘야함

- main branch로 이동

= git checkout master
= git branch

- dev branch merge

= git merge div

- merge 결과 확인

= git log

- Conflict

- merge conflict

- branch를 merge하는 과정에서 충돌이 날 수 있음. 혹은 push, pull하는 과정에서도 충돌이 일어날 수 있음

this is - this is merge test와는 달리
this is merge test - this is conflict test 처럼 같은 선상에 다른 내용이 있을 때

- main branch에서 파일 수정

hello, noma를 만들자
= git branch
= cat > test.txt
= hello, noma.
= git commit -m 'reset' test.txt

- conflich test를 위한 branch생성

hello, noma를 카피함. 이동은 x
= git branch dev2

- main branch에서 파일 수정

hello, zero를 만들자
= cat test.txt
= git branch
= git checkout master
= cat > test.txt
= hello, zero.
= cat test.txt
= git commit -m 'modify -zero' test.txt

- dev2 branch에서 파일 수정

hello, base를 만들자
= git checkout dev2
= cat > test.txt
= hello, base.
= git commit -m 'modify -base' test.txt

- main branch에서 dev2 merge

이때 양쪽이 같은 파일의 같은 부분을 수정했기 때문에 conflict 발생
= git checkout master
= git merge dev2
= merge conflict in test.txt

- MergeTool 실행

conflict 발생 후 아래와 같이 MergeTool을 실행하면 conflict난 파일들이 차례로 열림
= git mergetool

  • VSCode 에서 'hello, base.' 빼고 지운 후 저장
  • conflict 해제하려면 add, commit 한번 씩 해줘야함

- vscode 에서 conflict 파일 수정

main branch와 dev2 branch의 diff를 <<<<, ====, >>>>로 표시

- conflict 해제

git add + git commit
= git add test.txt
= git commit

- git log로 확인

= git log

post-custom-banner

0개의 댓글