경주장
생활코딩(Egoing) - Git3 CLI branch & conflict 본문
1. Branch란
독립적으로 어떤 작업을 진행하기 위한 개념입니다.
커밋 사이를 가볍게 이동할 수 있는 어떤 포인터 같은 것
2. 실습준비
3. 브랜치의 기본 사용법
git branch 브랜치의 종류를 출력
Branch 파기
git branch apple
git branch google
git branch ms
=>
Master Branch에서 커밋
=>
Apple Commit
apple.txt는 별도로 작성
git log
ms commit 후 git log
apple과 master에서는 각각 한번씩 commit을 더 했습니다.
:
현재 상태 :
4. 병합
commit 만 그려서 목표 상태를 나타내면 아래와 같습니다.
즉 apple 브랜치를 master 브랜치에 병합 하는 것 입니다.
현재 브랜치의 상태를 살펴보겠습니다. - 강의의 같은 파일 같은 부분(4.4)에 해당되는 실습입니다.
apple 브랜치의 내용을 master 브랜치로 합치기
Step 1 : Master Branch의 상태가 된다.
Step 2 : 땡겨오고 싶은 Branch (apple)를 merge 명령어로 지정
work.txt의 4번째 line에 대해서 충돌이 발생하였다.
branch를 나타내는 하늘색 괄호 부분이 (master|MERGING)이라고 바뀌고 충돌이 없는 부분에 대한 병합이 이루어졌다.
work.txt라는 파일의 같은 부분이 변경되었으며 unmerged 되었다고 알려준다.
충돌이 발생한 Line 4부분이 아래와 같이 변하였다.
vs 코드는 line 3과 4사이 옵션을 통해 쉽게 (Current Change)와 (Incoming Change)중 어떤 것을 선택 할 지 정할 수 있게 도와준다.
Accept Both Change를 선택하고 저장
git에게 충돌을 해결하였음을 알려준다.
Git의 환상적인 기능인 충돌을 해결하는 방식을 살펴보았다!
5. 3 WAY MERGE
git이 충돌을 감지하는 방식
Here | BASE | There | 2Way(Here+There) | 3Way |
---|---|---|---|---|
A | A | A | A | A |
H | B | B | ? | B |
C | C | T | ? | T |
H | D | T | ? | ? |
BASE를 기준으로 3 WAY MERGE를 하면 좀 더 많은 것을 자동화 할 수 있다. 변경이 일어난 부분을 더 많이 감지
6. 외부도구를 이용한 병합
실습 환경 :
위의 표와 같은 변경을 work.txt에 가지고 있으며 there을 here에 merege tool을 활용하여 병합시켜 보자!
add도 자동으로 해준다!
7. 수업을 마치며
관심을 가져 볼 만한 키워드
- git workflow, git flow - 모범사례
- Cherry Pick
- Rebase
인생에는 버전만있고 리셋도없고 브랜치는 더더욱 없다...
부록 1. HEAD, BRANCH, COMMIT & CHECKOUT
- (현재 저장소의 버전) : Head의 Branch의 version
- Branch를 새로 파면 해당 Branch는 (현재 저장소의 버전)을 버전으로 가진다.
- Checkout은 Head의 Branch를 변경하는 것
- Version을 새로파면 Head의 Branch의 version이 업데이트 된다.
부록 2. Checkout vs Reset
Checkout master : HEAD -> master : 헤드를 바꾸는 것
Reset master : google -> 2 : 브랜치를 바꾸는 것 (삭제의 느낌)
Reset 1 : google -> 1
'Git,Github' 카테고리의 다른 글
git, ec2 인스턴스동기화 Issue (0) | 2022.01.04 |
---|---|
생활코딩(Egoing) - Git2 - 버전 이동, 삭제 (0) | 2021.12.24 |
생활코딩(Egoing) - Git1, Git2 - Version Create, Read (0) | 2021.12.24 |