울음참고 개발공부
article thumbnail
728x90

여태까지 git 을 사용하며 메인 브랜치만 사용하고 다른 브랜치를 같이 사용해본적이 잘 없다. 

하지만 브랜치관리는 협업에 있어 무척이나 중요하다!! 

 

 

[ 상황 ]

 

예를 들어 쇼핑몰 웹페이지를 구현하는 경우에 '쿠폰 기능'을 추가한다고 하자 

이 기능을 추가하며 기존 프로젝트에 버그나 다른 문제가 발생할 수 있는데, 이때 브렌치가 '복사본' 역할을 할 수 있다. 

 


 

1. 브랜치 생성 및 이동

 

# 'coupon' 브랜치 생성
git branch coupon

# 생성된 브랜치로 이동 ( master -> coupon )
git switch coupon

브랜치를 생성하고 생성된 브랜치로 이동한다.

 

 


왜 이동??

 

 

기존 브랜치가 main 또는 master 로 설정되어있을 것이다.

그리고 지금 상황은 master 에서 작업 중에 쿠폰 기능을 추가로 만들고 싶은 상태이다.

 

예를 들어 현재 main 에 '회원가입'-'로그인'-'마이페이지' 가 구현되어 있다고 하자

이 상황에서 '쿠폰' 기능을 추가하고자 브랜치를 생성한다면,

마이페이지까지 만들어진 시점에서 부터 쿠폰 기능을 구현하게 되는 것이다.

 

따라서, 메인 브랜치와 쿠폰 브랜치는 각각 별개로 작업이 가능하다. 

 

결론 => 쿠폰 브랜치에서 쿠폰 기능을 구현하기 위해 해당 브랜치로 이동하는 것이다.

 


 

그렇다면, 메인 브랜치에서 쿠폰 브랜치로의 이동은??

 

 

나의 경우는 master 브랜치가 기본 브랜치였기때문에 master 로 이동하면 된다. 

 

 

 

2. 브랜치에서 커밋진행하기 

 

커밋을 하는 방법을 알고있다는 가정하에, master 브랜치와 coupon 브랜치에서 각각 커밋을 진행해보자

 

 

VScode 에서 'git graph'라는 확장프로그램을 통해본 log

 

 

 

master 브랜치에서, 처음 커밋(make a 'aaa.text')한 후에 coupon 브랜치를 생성하였다.

그렇기 때문에 coupon 브랜치에도 aaa.txt 파일이 존재한다. 

 

각가의 브랜치가 분리되어 작업되고 있음

 

 

 

 

3. 브랜치 합치기(merge)

 

 

[ 상황 ]

 

coupon 기능을 구현이 끝나 이제 하나로 합치고 싶다.

이때 사용하는 것이 merge 

 

 

 

[ merge 시 충돌(conflict) ]

 

현재 두 브랜치에 'aaa.txt' 파일이 존재한다. 

master 브랜치와 coupon 브랜치 모두에서 aaa.txt 파일에 수정이 일어난다면? 

이때 발생하는 것이 충돌 (conflict)

 

 

 - 충돌을 발생시켜보자

 

master 브랜치에서 aaa.txt 수정

 

coupon 브랜치에서 aaa.txt 수정

 

 

- merge 진행 

 

이때, master 브랜치로 merge 시켜야하므로 merge 진행은 master 에서 해야한다!

 

# 현재 브랜치 확인
git branch 

# merge 진행
git merge coupon

현재 브랜치가 master 에 있다면 merge 를 진행한다

 

merge 시 충돌 발생

예상대로 aaa.txt 에서 충돌이 발생하였다. 

 

 

aaa.txt 파일

이렇게 어디에서 충돌이 발생하였는지도 알려주는데, 

중복되는 부분을 수정해주어야한다.

위에서 충돌을 발생 시킬때 1행과 3행의 코드가 다르므로 이부분이 중복되지않게 해준다. 

 

 

 


해결

위의 aaa.txt 파일을 수정한 모습

 

해결 방법은 간단하다.

바로 원하는 코드만 남겨두고 다시 커밋을 진행하면 된다.

 

 

merge 된 모습

 

 

 

 


 

한 프로젝트에서 공동으로 작업하는 경우에 브랜치관리법은 매우 중요하다

앞으로도 하나하나 익혀나가보자 !! 

 

 

 

 

 

 

 

[ 출처 ]

코딩 애플

https://codingapple.com/

 

728x90
profile

울음참고 개발공부

@메각이

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!