본문 바로가기

국비지원_핀테크

3일차_ 브랜치(branch) 생성, 삭제, 병합, 충돌

 

 

브랜치(branch)란?

  • 여러 사람이 동시에 다양한 작업을 할 수 있게 만들어주는 기능
  • 브랜치(branch)는 여러 사람이 각자 독립된 작업 영역(branch) 안에서 마음대로 소스 코드를 변경할 수 있게 한다
  • 이렇게 각각 브랜치(branch)에서 작업한 내용은 이후에 하나의 브랜치로 병합하는 과정을 통해 버전을 쌓아나간다

 

 

 

브렌치 테스트 파일 생성

최초에 만들어지는 브랜치는 master 이고 master 브랜치에는 프로젝트의 메인 브렌치이다. 여럿이서 작업하거나 작업 브랜치가 여러개가 필요한 경우 다른 브랜치에서 작업 후 master 브랜치로 푸쉬하여 전체적인 하나의 프로젝트가 완성된다. ( 즉, 브랜치는 하나의 작업공간이다. )

 

 

브랜치에 파일 생성과 add, commit

브랜치에 파일 생성, add, commit
vi 로 작업한 파일 내용

 

 

브랜치 확인 및 브랜치 만들기

브랜치 확인 및 test123 브랜치 생성 ( 앞에 ☆이 붙은 브랜치가 현재 작업 브랜치 )

※ 브랜치를 생성하는 경우는 master 브랜치로 한번이라도 커밋을 진행해야 브랜치가 생성된다 ※

 

브랜치 삭제하기

브랜치를 삭제할 때는 --delete 옵션 또는 -d 옵션을 사용하면 된다

 

 

다시 테스트 할 브랜치 생성

kim-branch 생성

 

 

작업할 브랜치 변경

kim-branch 로 작업할 브랜치 위치를 변경

 

 

브랜치 정보 확인

master 브랜치에서 생성했기 때문에 kim-branch 가 생성된 시점의 master 브랜치의 정보를 그대로 kim-branch 도 가지고 있음
master 에서 생성한 main-project.txt 와 내용도 동일한 것 확인

 

 

새로 생성한 브랜치에서 파일 하나 생성

kim-branch 에 member-view.txt 파일 생성
txt 파일 내용

 

 

커밋까지 진행 후 브랜치 상태, 로그 확인

master 브랜치와 커밋 시점이 다른 것 확인

 

 

새로운 파일 생성, add, commit

member_del.txt 생성, add, commit

 

 

브랜치 상태와 로그 확인

"회원삭제기능 완료" 까지 정상적으로 커밋된 것 확인

 

 

새로운 파일 생성, add, commit

test.txt 파일을 생성, add, commit

 

 

브랜치 이동 후 다른 점 확인

kim-branch 브랜치에서 작업한 파일은 모두 master 브랜치에는 존재하지 않는다, 브랜치가 분리되었기 때문! 또한 kim-branch 브랜치에서 master 가 커밋한 "기본 플젝입니다" 가 확인되는데 이유는 저 시점에 master 브랜치에서 kim-branch 브랜치를 생성했기 때문에 마지막 커밋 내용까지 따라온 것이다.

 

 

브랜치에서 작업 시 유의사항

브랜치에서 새로운 파일을 만들었을 경우에 add, commit 작업을 진행하지 않으면 master 브랜치에서 관리하는 파일로 기본으로 등록되기 때문에 파일을 새로 생성하여 작업하는 경우 add, commit 절차를 진행해야 한다.

 

 

브랜치의 모든 로그 내용 확인

--all 옵션 사용하여 모든 브랜치의 로그 내용 확인

 

 

kim-branch 브랜치 에서 작업한 내용을 master 브랜치로 합치기

merge 명령어로 브랜치를 병합, 병합할 땐 병합될 브랜치 위치에서 명령어 작업을 해야 한다.

 

 

작업한 내용 깃허브에 push 하기

HTTPS 주소로 깃허브와 연동 후 push ( 첫 push 이기 때문에 -u 옵션 사용 )
깃허브에 정상적으로 푸쉬된 모습

 

 

브랜치 변경 후 파일 생성

cat 명령어로 member_modify.txt 파일 만들면서 내용까지 작성 ( 내용을 모두 작성하면 엔터 후 Ctrl + c 눌러서 작성 종료 )

 

 

특정 내용만 병합하려는 경우

kim-branch 사용자가 member_modify.txt 파일을 작업하는 도중 test.txt 파일에 문제가 생긴 것을 확인하여 해당 파일을 정상적으로 문제 해결한 상황
test.txt 파일 내용 문제 해결 완료
kim-branch 사용자는 다른 내용 작업 중 test.txt 파일을 패치하였기 때문에 모든 내용을 merge 로 합치게 되면 작업중인 파일까지 올라가기 때문에 패치된 test.txt 파일만 master 브랜치로 병합하여야 한다

 

 

master 브랜치에 특정 파일만 병합 ( checkout -p )

master 브랜치로 브랜치 변경하여 kim-branch 의 test.txt 파일만 병합

 

 

git status 로 확인하니 kim-branch 에서 작업중이던 member_modify.txt 는 병합되지 않고 test.txt 만 병합 성공, 이후 master 에서도 커밋을 진행해줘야 한다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

여러명이서 공통 파일을 사용하다가 오류가 발생한 상황 가정

새로운 디렉토리 생성하여 git 으로 관리하는 디렉토리로 등록 후 공통 파일을 생성, add, commit 까지 진행

 

 

브랜치 신규 생성

kim, lee 브랜치를 생성 ( 이때, master 의 브랜치를 받아오기 때문에 common 파일도 kim, lee 에 모두 커밋된 상태로 생성된다 )

 

 

 

kim 에서 공통파일 작성

 

 

lee 에서 공통파일 작성

 

 

master 브랜치에서 lee 의 공통파일 내용 병합 ( merge )

 

 

master 브랜치에서 kim 의 공통파일 내용 병합 ( merge ) - 내용 충돌로 인해 오류 발생

내용 충돌로 인해 병합이 불가능하기 때문에 직접적으로 해당 내용을 수정해줘야 함 ( cat 으로 확인해보니 병합 충돌로 인해 내용이 이상해짐 )

 

 

충돌내용 직접 작업

문제가 생긴 common.txt 파일을 vi 편집기로 직접 유의미한 내용만 남기고 편집한 뒤 저장
충돌이 생긴 common.txt 파일을 직접적으로 vi 편집기 등을 통하여 유의미한 내용만 남도록 작업한 뒤 저장해서 커밋까지 진행해줘야 정상적으로 병합이 진행된다

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

- 실습 예제 -

 

 

 

 

1. 실습 풀이

ranch-quiz 레포지토리 생성

 

branch-quiz 디렉토리 생성 후 이동

 

main_project.txt 파일 생성

 

main_project.txt 파일 add, commit

 

브랜치 2개 생성

 

 

2. 실습 풀이

a-branch 로 이동하여 디렉토리, 파일 생성 및 파일을 a-branch 에서 관리하는 파일로 등록

 

b-branch 로 이동하여 디렉토리, 파일 생성 및 파일을 b-branch 에서 관리하는 파일로 등록

 

 

3. 실습 풀이

master 브랜치로 전환 후 공통기능 파일 생성 ( cat 사용 후 내용 적고 Ctrl + c 로 입력종료 )

 

공통기능으로 사용되는 commonservice.txt 파일 add, commit

 

 

4. 실습 풀이

a-branch 브랜치에 master 브랜치 내용 merge

 

merge 받는 대상이 master 가 아니므로 merge 에 대한 내용을 적으라는 vi 편집기가 출력되는데 그냥 저장하여 무시하면 됨

 

a-brunch 브랜치에서 commonservice.txt 파일에 "a-brunch 공통 기능 추가" 문구 추가

 

a-brunch 브랜치에서 add, commit 완료

 

b-branch 에서도 동일한 작업 진행

 

 

5. 실습 풀이

master 에 a-branch 머지

 

master 에 b-branch 머지 시도 시 오류 발생, vi 로 commonservice.txt 열어서 직접 수정

 

내용이 충돌난 상황

 

수기로 commonservice.txt 파일 작업 후 저장

 

이후 add와 커밋 진행

 

master 브랜치에서 깃허브 원격지 연동 후 푸쉬 ( 첫 푸쉬이기 때문에 -u 옵션을 사용 )

 

깃허브에서 정상적으로 올라간 내용 확인

 

파일 내용도 확인

 

728x90