본문 바로가기

git & github/git & github 기초

[git & github 기초] 4. 브랜치, 병합, 충돌

1. 브랜치 이름 변경하는 방법

명령어 : git brach ( 현재 브랜치명 확인 )

명령어 : git brach -m "브랜치명" ( 브랜치명 수정 )

커밋에 영향 x , 단순히 이름 변경

 

2. 새로운 브런치 만드는법

명령어 : git checkout -b feature ( featrue라는 새 브런치 생성, 브런치끼리 교환도 가능하다고함 )

 

 

 

head라는게 id랑 같이 존재하는데 head는 특정 브런치의 최근 커밋이다.

 

3. 새로운 파일 생성 후 커밋까지

근데 이 경우 feature branch 내용이 main에 적용되어 있지 않음. 어떻게 추가할까?

우선 중요한 것은

 

"내가 현재 가지고 있는 브런치가 추가 커밋을 받아야 한다." 이다.

 

4. 브런치 병합

step 1. git checkout 명령으로 main 브런치를 현재 가지고 있는 브런치로 바꾼다.

 

 

step 2. git  log 를 통해 현재 위치 확인 ( HEAD 를 보면 됨 )

main에 추가한 커밋 2개를 확인할 수 있고 최근 커밋을 헤드가 가르키고 있다.

 

step 3. 현재 위치에서 feature 추가

명령어 git merge featrue

 

HEAD의 위치가 두 브런치 모두 가르키고 있다. ( 최근 커밋을 가르킴 )

최근 커밋은 병합 전 feature에 있었던 커밋이므로 병합이 잘 된것을 볼 수 있다.

 

5. 병합 충돌 상황 및 해결

 

step 1. 메인 브런치에 커밋추가

 

step 2. feature 브런치에 커밋추가

 

 

두 브런치의 커밋 내용이 둘 다 test,txt 파일을 수정하고 있으므로 충돌 발생

 

 

vscode의 기능으로 충돌 상황을 해결할 수 있다. ( Accept Incoming Change 클릭 ) 

 

step 3. 충돌 상황 이후

클릭 이후 feature의 최신 커밋으로 test.txt 파일이 갱신되었다. 그럼 해결된 것일까?

 

git status 명령을 준다.

아직 병합되지 않은 경로들이 존재한다. ( text파일을 충돌 파일 중 하나로 갱신한 것일 뿐 커밋은 되지 않은것을 확인함 )

 

병합 이후 원래의 목적대로 커밋을 하기 위해서는 충돌 해결 후 원래 커밋을 하는 과정과 동일하게 진행한다.

HEAD가 main branch를 가르키고 있다 또한, main의 최신 커밋이 위에 커밋한 주석과 같다.

 

여기까지 두 개의 충돌 커밋 중 하나를 선택해 갱신한 뒤 다시 커밋을 하는 과정을 살펴보았다.