Git

git> branch

연습노트 2024. 7. 24. 16:50

 

 

 

 

 

커밋하면서 계속 코드짜다보면 갑자기 새로운 기능을 추가하거나 그래야하는 경우가 있습니다.

그럴 때는 원본파일에 코드를 추가하고 커밋해도 되겠지만

혹시나 잘못해서 지금까지 짰던 프로그램이 망가지거나 그러면 어떻게하죠? 

그럴 걱정 없이 안전하게 새로운 기능을 추가하고 싶으면

프로젝트의 복사본을 만들어서 거기에 먼저 개발해보는것도 나쁘지않습니다. 

 

 

 

 

git 안에선 branch 기능을 이용해서 복사본을 쉽게 만들 수 있습니다. 

branch가 뭐냐면 그냥 프로젝트 복사본임 

예시와 함께 branch 하나 만들어봅시다. 

 

 

 

 

 

 

쇼핑몰을 만들고 있는데 새로운 기능이 필요하다

 

예를 들어 지금 작업폴더에서 쇼핑몰 만드는 코드를 짜고 있다고 가정해봅시다.

근데 갑자기 쿠폰기능을 추가하고 싶은겁니다. 

근데 위험하고 복잡할 것 같아서 원래 있던 소스코드를 직접 수정하는게 아니라 

프로젝트 사본을 만들어서 거기다가 먼저 개발해보고 싶은겁니다.

그러면 branch를 하나 만들면 됩니다.  

 

 

 

 

 

 

 

git branch 브랜치이름 

이러면 프로젝트 사본이 하나 생성됩니다.

저는 git branch coupon 이라고 작명해봤습니다.

 

 

 

git switch 브랜치이름 

예를 들어 방금 만든 coupon 브랜치로 이동하고 싶으면

git switch coupon 하면 됩니다.

 

- 옛날엔 "git checkout 브랜치명" 입력했음 

- 다시 메인 브랜치로 되돌아가고 싶으면 git switch main 하면 됩니다. (님들 설정에 따라 main 말고 master 일 수도 있음)

- 어떤 브랜치에 와있는지 까먹었으면 git status 입력할 수 있습니다. 

 

 

 

coupon 브랜치로 이동했으면 거기서 개발하고 commit 맘대로 할 수 있습니다.

coupon 브랜치에서 새로운 파일 만들어서 코드짜고 commit 몇번 해보십시오. 

master/main 브랜치에서도 기존 파일들에 commit 몇번 해봅시다. 

 

하기싫은데요

 

 

 

 

 

 

 

▲ 지금 상황을 그림으로 그려보면 이렇습니다. 

저번 시간까지 commit 하던 곳도 실은 하나의 branch 입니다.

main branch 또는 master branch 라고 부르고 

coupon branch에서 작업한 내용은 원래 브랜치인 main branch에 아무런 영향이 없습니다. 

 

 

 

 

 

 

git log --graph --oneline --all

branch 와 commit 내역을 한 눈에 그래프로 보고 싶으면 이거 입력해보면 됩니다.  

그림이 저처럼 안이쁘면 commit 이 부족할 뿐 

 

 

Q. git log 하면 나오는 HEAD가 뭔가요?

A. 님 현재 위치임 

 

 

 

 

 

 

 

branch 합치기

 

그래서 branch에서 짰던 코드가 맘에들면 어떻게 하냐고요?

원본코드가 있는 master 또는 main 브랜치에 합치면 됩니다.

 

 

 

 

브랜치를 합치는걸 전문용어로 merge라고 합니다.

그럼 브랜치에서 개발했던 내용을 main 브랜치에 더해줄 수 있습니다. 

 

 

 

 

 

git switch main
git merge 브랜치명 

merge 하고 싶으면

1. main/master 브랜치로 다시 이동하고

2. git merge 브랜치명 입력하면 합쳐집니다.

예를 들어 git merge coupon 이러면 coupon 브랜치의 코드들이 main/master 브랜치에 합쳐집니다.

 

 

 

▲ merge 하고 나서 git log 이런거 해보면 이쁘게 합쳐줬다고 알려줍니다. 

 

 

 

 

 

 

▲ 근데 합칠 때 주의사항이 있는데

master 브랜치와 coupon 브랜치에서 같은 파일, 같은 줄을 수정했을 경우

merge conflict 가 발생합니다.

이 경우 에디터로 해당 파일을 열어보면 충돌사항이 적혀있습니다. 

 

 

 

 

 

 

▲ 둘 중 어떤 코드를 적용할지 고르면 되는데 

<<<< / >>>> / ==== 이런 쓸데없는 것들은 다 지우고 원하는 코드만 남기면 됩니다.

(VSCode 에디터의 경우 Accept Incoming Change 어쩌구 버튼들을 제공해주는데 그거 누르면 편리합니다)

어떤 코드를 남길지 결정했으면 

git add 파일명

git commit -m '메세지'

입력하면 새로운 commit 을 생성해주며 merge conflict 해결 + 브랜치 합치기 완료입니다. 

 

 

 

 

 

 

 

 

협업시 branch 유용함

 

여러 개발자들과 협업할 때도 branch를 만들어서 하면 편리합니다. 

같은 프로그램을 만드는데 10명이서 동시에 똑같은 소스코드를 수정하고 저장해버리면 난리가 나지 않을까요. 

그래서 기능을 하나 추가하고 싶으면

1. 우선 branch로 프로젝트 사본을 만들어서 거기서 먼저 개발을 조집니다.

2. 그리고 테스트해봤는데 잘 된다면 main branch 에 다시 합칩니다.

그렇게 개발하면 더 안정적으로 개발이 가능하겠군요.