추가예정) Git의 Branch 와 CONFLICT

oching·2022년 4월 25일
0

Git

목록 보기
4/4

FASTCAMPUS ST-FE 3기)
Part 2. Git을 활용한 버전관리 ch1. 버전관리

01. Main과 Branch

Git은 branch라는 개념으로 독립적으로 어떤 작업을 진행, 기록한다.
main은 말그대로 주체, 사용화가 되는 중요한 줄기를 의미하고
branch는 가지, 상용화까지의 검토를 마친 뒤 합쳐지는 부분의 개념이다.

필요에 의해 만들어지는 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에,
여러 작업을 동시에 진행할 수 있게한다.

1.1 Branch 확인

//현 branch 확인
$ git branch

//원격 저장소를 포함, 모든 branch 확인
$ git branch -a

1.2 Branch 생성

현재 나의 위치(HEAD)가 Main일때 branch명령어로
branch 정보의 확인과 생성이 가능하다.

//branch 추가
git branch [추가할 branch명]

//branch간 전환
git switch [옮겨갈 branch명]

1.3 Branch 간 전환

//branch 간 전환
$ git checkout master

1.4 Branch 삭제

사용을 다 한 branch는 바로 삭제해주는 것이 좋다.

$ git branch -D [삭제할 branch명]

02. Merge 병합하기

이번에는 브랜치의 변경 사항을 'main'에 병합해보자.

2.1 HEAD

HEAD는 특정 브랜치의 마지막 커밋에 대한 포인터를 의미한다.

merge시 가장 먼저 체크해야할 것은 현재 시점(HEAD)이다.
HEAD가 찍혀있는 특정 커밋은 화살표로 가르키는
branch 에서 진행되었음을 확인할 수 있다.

commit d32djfslkjifidcclsifpa402185 (HEAD -> main)
//현재 가장 마지막 커밋은 main에서 진행되었음 

병합을 할 때 HEAD가 중요한 이유는
병합은 곧 어디branch에, 어떤branch를 당겨올거야? 라고 인식하기 때문이다.

main브랜치에 oching브랜치를 병합한다고 가정하면,
현재 포인터를 main에 위치시키고

$ git switch main

브랜치를 당겨와준다.

$ git merge oching

03. conflict 충돌

같은 파일간 버전차이가 있을 때 merge하는 경우 발생할 수 있다.

같은 파일내에서도 다른 부분을 수정할 경우
merge하면 순서대로 쌓아지듯 수정사항이 모두 기록되어 merge된다

문제는 같은 파일내에서, 같은 부분을 수정할 경우 인데
이 때에는 어떤 수정 사항을 선택할지 확인을 요하기에
CONFLICT라고 해당파일에 충돌 이슈가 있다는 것을 출력해준다.

현재 main, exp 각각의 브랜치에서
common.txt의 같은 부분을 수정했다고 가정

$ cd main 
$ git merge exp
//CONFLICT
//'merge는 되었으나 해당파일은 확인이 필요하다.' 

$ git status 
// both modified : common.txt
// 둘다 수정되어졌다는 상황 확인 

$ vim common.txt
//내용 열기

vim 환경 )
function b(){
}
<<<<<<< HEAD    //현재 브랜치에서 수정한 내용
function a(master){
=======      //구분자 - 기준으로 각 브랜치별 수정된 내역을 확인할 수 있다. 
function a(exp){  
>>>>>>> exp    //exp 브랜치에서 수정한 내용

내용에 맞춰 수정해준 뒤 :wq저장후 나옴

$ git add common.txt
//다시 해당 파일을 onstage해주고

$ git status
// modified common.txt 
// 수정되었고, 올바르게 onstage되었는지 확인

$ git commit 
//커밋해준다
profile
FE Studying

0개의 댓글

관련 채용 정보