본문 바로가기
프로그래밍 기초 스터디/깃허브 - Github

[깃허브 Github 공부하기] 5. 브랜치(Branch) 만들고 통합하기 & 브랜치 충돌 해결하기

by 공부하는우니 2022. 12. 6.

 

브랜치 (Branch) : 여러 개발자가 프로젝트에서 각기 다른 기능을 개발할 수 있도록 하는 기능

 

 

Git 저장소를 만들면 마스터 브랜치 (Master branch) 가 자동으로 생성됨 > 일반적으로 배포가 가능한 수준의 안정화된 버전을 담고 있습니다.

 

 

 

마스터에서 특정 시점에 Develop Branch (새로운 기능 개발) 혹은 Bug Branch (버그 수정) 을 만들어서 병렬로 프로그래밍을 수행하고, 완료된 시점에 Master Brach에 통합/합치기 (Merge)

 

통합 브랜치 : Master

토픽 브랜치 : 그 외 (각 기능을 위한 브랜치)

 


1. 새 브랜치 만들고 통합하기

 

git branch : 현재 브랜치 상황. 아무것도 추가하지 않았으니 main만 존재 ( * .git폴더가 포함된 폴더에서 동작하겠죠! )

git branch <이름> : 새 브랜치 생성

git checkout <이름> : 브랜치로 이동

 

git branch
git branch develop
git branch
git checkout develop
git branch

 

 

 

이후 새 함수를 추가하고 커밋합니다.

 

 

git add .
git commit -m "Add my_module [Div]"
git log

 

헤드가 develop branch를 가리키고 있으며,

 

원격지 주소는 main 그대로인 상태네요.

 

 

 

이후 git checkout main으로 마스터 브랜치로 돌아간 이후

git merge develop로 main에 develop를 merge해주어야 합니다.

 

git checkout main
git merge develop
git log
git push

 

 

 

push까지 수행하면 원격지 업데이트가 완료됩니다.

 

 

 

 

마지막으로 git branch -d <이름> 으로 브랜치 삭제

 

 

 

 


2. Merge시 발생하는 충돌 해결하기

 

* 보통 두개 이상의 Merge에서 동일한 파일을 수정했을 때 내용이 서로 다른 경우에 충돌 발생합니다.

 

git branch develop
git branch
git checkout develop
git branch

# .py 파일에 function1을 추가하고
git add .
git commit -m "Add my_module [function1]"
git log

 

이후 메인 브랜치로 이동

 

git branch main

 

 

주석을 추가하고 add, commit을 수행함 (메인 브랜치에서 수행됩니다)

 

git add .
git commit -m "Add my_module [function1] & Comment"
git log

main branch의 log

git checkout develop
git log

develop branch의 log

 

 

메인브랜치로 이동한 후 merge를 수행하면 에러 발생

 

git checkout main
git merge develop

 

.py 파일을 열어보면 서로 다른 영역을 나타내줌 ==> 필요한 부분만 남기고 지워줍니다.

 

git add .
git commit -m "Add my_module [Div] & Comment"
git merge develop

 

그러면 main과 develop가 모두 한 화면에 나오네요.

git branch -d develop
git push

 

 

 


- 메인 작업 공간 (연구실)

- 또다른 원격지(집)

=> 집에서 브랜치를 생성해서 pull하는법 (Home이라는 브랜치에서 작업)

 

git remote -v : 로 push할 원격 저장소 이름 확인 (대부분 origin)

git push <원격 저장소 이름> <push할 브랜치 이름> : 으로 브랜치 push

git remote -v
git push origin Home

이후 웹페이지상에서 pull_request, merge까지 수행 가능

댓글