충돌을 막아보자 !
- 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 이란?)
Git1 (Git 이란?)
Git1 내가 처음 Git을 접했을 때 너무 어려웠다, 처음보면 다 그러니 계속봐서 익숙해지자 ! Git 이란? 버전관리 시스템(형상관리)의 한 종류 Configuration Management Systems, Version Control Systems 버전관..
variety82p.tistory.com
2022.01.04 - [CS/컴퓨터 네트워크] - 컴퓨터 네트워크 #2(네트워크의 기본 규칙)
컴퓨터 네트워크 #2(네트워크의 기본 규칙)
컴퓨터 네트워크 #2 네트워크의 기본 규칙 Introduction ⚙세상이 질서있게 돌아가기 위해 우리들은 모두 특정한 규칙 하에 살아간다. 서로 다른 규칙, 약속하에 살아가게 되면 상당히 불편하고 소
variety82p.tistory.com
2022.01.05 - [컴쀼따/Git] - Git3 (Local Repository, Remote Repository)
Git3 (Local Repository, Remote Repository)
Local Repository Local Repository 구성 Local Repository는 Git이 관리하는 3단계로 구성되어 있다. Working Directory(작업공간) - 실제 소스 파일, 생성한 파일들이 존재, 그냥 컴퓨터에 있는 폴더라 생각! In..
variety82p.tistory.com
2022.01.05 - [컴쀼따/Git] - Git4 ( Remote Repository 복제, 클론!)
Git4 ( Remote Repository 복제, 클론!)
Clone을 사용하여 Remote Repository를 로컬에 복제해보자! Remote Repository를 Local로 복제해서 사용하기 Local Repository를 생성하지 않은 상태에서 Git clone 명령을 사용하여 Remote Repository를 Local에..
variety82p.tistory.com
2022.01.05 - [컴쀼따/Git] - Git5 (Branch)
Git5 (Branch)
협업과 버전관리를 위한 Branch를 AraBoza! Branch 브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념, 필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작
variety82p.tistory.com
2022.01.05 - [컴쀼따/Git] - Git6 (Git Graph, Git Log)
Git6 (Git Graph, Git Log)
작업이력을 확인해보자 ! 작업한 것에 대한 버전과 브랜치들을 텍스트가 아닌 시각적으로 보기 가능 VSCode - extension - Git Graph 검색 후 설치 아래 그림 클릭시 그래프 확인 가능! 실습환경 만들기 R
variety82p.tistory.com
2022.01.05 - [컴쀼따/Git] - Git7 (Git Diff)
Git7 (Git Diff)
다른 작업과 차이를 비교해보자! Git Editor 설정 git config --global core.editor --wait # ex) git config --global "code --wait" # VSCOde가 code임 ㅋㅋ --wait 옵션은 command line 으로 VSCode를 실행시켰..
variety82p.tistory.com
'💻 > 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 |