충돌을 막아보자 !
- Merge : 브랜치를 다시 병합하는 기능, 현재 위치한 Branch에 다른 Branch를 병합
- Conflict : Merge하는 과정에서 양쪽이 똑같은 부분을 수정했을 때 시스템이 이를 사용자한테 알려 해결하는 과정
Merge Tool 설정
git config --global -e
# 아래 텍스트 추가, diff때와 마찬가지로 wait 옵션은 선택사항
[merge]
tool = vscode
[mergetool "vscode"]
cmd = "code --wait $MERGED"
실습환경 Setting
- Remote Repository 생성
- 이름 : merge_project으로 하겟숨
# clone 후에 해당 폴더로 이동!
cd merge_project
cat > test.txt
my name is kiki
git add test.txt
git commit -m 'create' test.txt
# Branch 생성 후 파일 수정(꺽쇠 두번이라 이어쓰기임~)
git checkout -b dev
cat >> test.txt
you are park
# 확인!
cat test.txt
git commit -m 'modify 1' test.txt
Git Merge
- Git Merge : 현재 위치한 Branch에 다른 Branch를 병합
# 사용법
git merge <branchname>
# main으로 이동후 merge
git checkout main
git merge dev
- git log로 결과확인
git log
Conflict
- Branch를 Merge 하는 과정에서 충돌이 날 수 있음
- 혹은 Push, Pull하는 과정에서도 충돌이 일어날 수 있음
- Main브랜치에서 Hello, cat을 생성
- dev 브랜치에선 Hello, kim로
- Main브랜치의 Hello, cat을 Hello, dog으로 수정
- 이렇게 되면 서로 Conflict가 일어남
# main Branch에서 파일 수정
cat > test.txt
hello, cat
git commit -m 'reset' test.txt
# Conflict Test를 위해 새로운 branch 생성, 이동은 x
git branch dev2
# main branch에서 파일 수정
cat > test.txt
hello, dog
git commit -m 'modify -dog' test.txt
# dev2 branch에서 파일 수정
git checkout dev2
cat > test.txt
hello, kim
git commit -m 'modify -kim' test.txt
# main에서 dev2 merge시도를 할 시 conflict이 일어남!
git merge dev2
Conflict 해결법
- Conflict 발생 이후 아래와 같이 MergeTool을 실행하면 Conflict난 파일이 차례로 열림
git mergetool
- 바뀐 내용 중 어떤걸 선택할 지 골라야함, 메뉴를 선택해도 되고 바꾸고싶은 내용만 남기고 나머지를 지워도 됨
- 고르고 나면 파일변경이 완료됨, 그러나 conflict가 해결된 것은 아님
Conflict 해제
git add + git commit 으로 해제
git add test.txt
git commit
이전 글들이 보고 싶다면?
더보기
2022.01.03 - [컴쀼따/Git] - Git1 (Git 이란?)
2022.01.04 - [CS/컴퓨터 네트워크] - 컴퓨터 네트워크 #2(네트워크의 기본 규칙)
2022.01.05 - [컴쀼따/Git] - Git3 (Local Repository, Remote Repository)
2022.01.05 - [컴쀼따/Git] - Git4 ( Remote Repository 복제, 클론!)
2022.01.05 - [컴쀼따/Git] - Git5 (Branch)
2022.01.05 - [컴쀼따/Git] - Git6 (Git Graph, Git Log)
2022.01.05 - [컴쀼따/Git] - Git7 (Git Diff)
반응형
'💻 > Git' 카테고리의 다른 글
Git9 (Git Tag) (0) | 2022.01.05 |
---|---|
Git7 (Git Diff) (0) | 2022.01.05 |
Git6 (Git Graph, Git Log) (0) | 2022.01.05 |
Git5 (Branch) (0) | 2022.01.05 |
Git4 ( Remote Repository 복제, 클론!) (0) | 2022.01.05 |