2. Branch를 사용해보자

문인범·2023년 10월 13일

Git

목록 보기
3/7
post-thumbnail

branch가 뭔데

오늘은 branch에 대해 살펴볼게요.

커밋을 하면서 작업을 진행하다 보면 한번씩 새로운 기능을 넣어야 할 때가 있을것입니다.
근데 원본파일에 추가하기에는 잘못 건드리면 다 날라갈수도 있잖아요??
그런게 걱정이 된다면 사본을 만들어 거기서 작업을 하면 더 안전하지 않을까요???
그걸 Git 에서는 branch로 제공을 합니다.

네, 말그대로 나뭇가지입니다.
요렇게 나뭇가지처럼 사본을 만들어 개발이 가능합니다. 대박! ^0^

한번 사용해 볼까요?

branch 생성

제가 지금 앱 하나를 만드는 중이라 가정해 봅시다.
전 이 앱에 로그인 기능을 넣고 싶습니다.
하지만 원본을 건드리기엔 좀 쫄리지 않습니까? 전 쫄보라서 무조건 안전빵으로 갑니다.
이럴때 branch를 사용하면 됩니다.

git branch 브랜치이름 -> 브랜치 생성해줍니다. 

요러면 login 이라는 branch가 만들어 집니다.

이제 이 브랜치로 가는 방법은

git switch 브랜치이름 -> 해당 브랜치로 이동

git status로 확인을 해보면?
짜잔~ login 브랜치로 이동한 것을 확인할 수 있습니다.

자 그럼 login 브랜치에서 기능을 한번 만들어 봅시다.
이렇게 로그인 기능 만들어주고 커밋까지 해봅시다.

커밋까지 완료 후 다시 메인 브랜치로 돌아와보면???

WoW 대박 신기한데~~~
login.txt 파일은 login 브랜치에서 만들었기 때문에 main 브랜치에서는 나오지 않습니다.
이렇게 안전하게 기능 구현이 가능하네요!

자 일단 공부를 위해 main과 login 브랜치 둘 다 커밋 몇 번 해볼게요.

뚝딱뚝딱.......

다 완료하고 로그를 보면

git log --all --oneline --graph -> 요거 실행


아주 예쁘게 브랜치가 만들어진 것을 확인할 수 있습니다.
참고로 저기서 HEAD 는 현재 위치 입니당.

저번에 설치했던 익스텐션으로 더 예쁘게 봐볼까요?
벌써 멋진 개발자가 된 것 같은 기분이 듭니다^^

합치기

로그인 기능을 너무 완벽하게 만들었습니다.
여러분들도 그런 생각이 들면 이제 login 브랜치를 원본이 있는 main 브랜치와 합치면 됩니다.
브랜치 합치는 것을 전문용어로 merge 라고 합니다.
merge를 통해 login 브랜치에서 개발한 기능을 main 브랜치에 더해줄 수 있습니다.
뭐 대충 이렇게 된다네요

그래서 어떻게 합치냐구요?

  1. git switch main -> 일단 main 브랜치로 이동을 합니다.
  2. git merge 브랜치명 -> 합치려고 하는 브랜치명을 적고 실행하면 merge 완료!

요렇게 하면 간지나게 merge가 됩니다.
하지만 주의사항이 있는데.....

merge conflict

만약 main 브랜치와 login 브랜치 에서 같은 파일에 같은 줄을 수정했을 경우 merge를 진행하면 merge conflict 가 발생합니다.
우리 git 친구 입장에서 보면 같은 파일의 동일한 줄이 둘 다 수정이 되어 있으니까 둘 중에 어떤 수정점을 적용해야 할지 모르지 않겠습니까??

그런 상태에서 merge를 진행하면 요렇게 불만을 토로합니다.

그럼 어떻게 하느냐
그럼 우리의 친절한 에디터는 수정안을 마련해줍니다.
요기서 적용시키기 원하는 수정점만 남기고 <<<<</=====/>>>>> 요런 쓸대없는건 다 지우시면 됩니다.
아니면 위에 에디터에서 제공하는 기능을 사용하시면 됩니다.
(Accept Current Change 뭐 저런거 누르시면 편하게 수정이 됩니다.)

수정 후 conflict된 파일을 스테이징 / 커밋 하면 최종적으로 merge가 완료됩니다!

더욱 간지나게 merge가 완료되었네요.

오늘의 요약

git branch 브랜치명 -> 브랜치 생성
git switch 브랜치명 -> 해당 브랜치로 이동
git merge 브랜치명 -> 해당 브랜치 합침(main 브랜치로 이동 후 실행하기!)

merge conflict가 발생시에는 conflict가 발생한 파일을 수정한 후 
git add / git commit 까지 완료하기!
profile
월클 개발자를 향한 도전일지

0개의 댓글