본문 바로가기

Web Development/Github

[3장] 브랜치(Branch)

☞ 본 포스팅은 공부 내용을 바탕으로 정리하는 것입니다. 주관적이며 정확하지 않은 내용이 포함 되어있을 수 있습니다.

☞본 포스팅은 이지스퍼블리싱의 '깃&깃허브 입문'책을 공부한 내용을 토대로 요약한 내용입니다.

 

보다 자세한 내용은 아래 생활코딩의 동영상강의를 통해 보다 상세한 설명을 들을 수 있습니다.

https://www.youtube.com/watch?v=L0lLMdllUp8&list=PLuHgQVnccGMDU5eAzOz2dZ9KXJF6dkNg3

오늘 살펴보게 될 개념은 '브랜치(Branch)' 나뭇가지?! 입니다.

이전시간에 살펴본 버전관리를 조금 더 자세히 들어가보면 나오는 개념이더라구요.

원래 우리가 작업하는건 MASTER브랜치라는 것.

그 외에 또 다른 작업영역을 만든다는 것.

조금 더 자세히 살펴볼까요?

 

 

개요

브랜치는 우리가 주로 작업하는 영역인 MASTER외에 또 다른 작업영역을 만드는 것으로 이해할 수 있습니다.

MASTER영역을 나무로 보고, Branch영역을 나뭇가지로 보시면 더 좋을 것 같습니다.

마스터영역에서 브랜치들로 갈라져 뻗어나가 새로운 저장소 영역을 만드는 것을 '분기(branch)'한다 라고하며,

반대로, 브랜치들이 마스터영역으로 다시 모이는 것을 '병합(Merge)'한다라고 합니다.

그림을 통해 더 자세히 이해해보겠습니다.

 

 

브랜치

 

 

개념은 어느정도 익혔으니 이제 한번 본격적으로 브랜치를 만들어 보겠습니다.

 

브랜치 만들기 (분기하기)

우선 브랜치를 만들기위해서, 새로운 디렉토리를 만들겠습니다.

홈디렉토리(~)에서

'mkdir manual'

명령어를 통해 새 디렉터리를 만들고,

'cd manual'

이동해주세요.

 

그리고,

'git init'

으로 깃 디렉터리로 초기화시킵니다.

 

우선 이전시간에 했던것처럼 파일을 하나 만들어 수정해보겠습니다.

'vim work.txt'

를 통해 work.txt파일을 만들고, 편집기에서 content1을 대충입력해준뒤 저장해주세요.

 

그리고나서,

'git add work.txt'

' git commit -m "work 1" '

그리고 다음 명령으를 통해 스테이징과, 커밋 하겠습니다.

 

이제 work.txt파일을

content2를 넣고 커밋해주고, content3을 넣고 커밋해주세요.

그리고나서,

'git log'

를 통해 깃 로그를 확인해보면,

마스터브랜치

다음과같이 현재 마스터브랜치에서 커밋들이 진행된것을 확인 할 수 있습니다.

 

그럼 이제, 브랜치를 만들어 보겠습니다.

브랜치를 만드는 명령어는,

'git branch 브랜치이름'

입니다.

 

그리고, 브랜치를 확인하는 명령어는

'git branch'

입니다.

 

한번 apple 브랜치, google 브랜치, ms 브랜치를 만들어볼까요?

브랜치만들기

다음과 같은 로그가 보이면 성공입니다!

Master브랜치는 그림에서도 봤다싶히, 기본 브랜치이기 때문에 없앨 수 없습니다.

 

 

브랜치사이를 이제 자유자재로 넘어다녀보겠습니다.

'git checkout 브랜치명'

명령어를 통해 브랜치를 넘어다닐 수 있습니다.

이를 브랜치를 체크아웃한다라고 표현합니다.

그리고나면 위에서 보았던 HEAD->MASTER 부분이 변경되어있는 것을 확인 할 수 있을 것입니다.

 

이로써 브랜치를 만들 수 있게되었습니다.

 

그런데 브랜치를 활용해본적이 없으니 이게 어떻게 굴러가는 것인지 잘 이해가 안되실겁니다.

실습을 통해 더 자세히 알아보겠습니다.

 

위에서 우리는 MASTER 브랜치에서 work3까지 작업을 마친 상태입니다.

그리고 나서 우리는 분기를 했습니다. MS, APPLE, GOOGLE등 말이죠.

그럼 MS, Apple, Google등의 브랜치는 현재까지 work1,2,3 의 작업을 가지고 있습니다.

 

이제 다시 마스터 브랜치로 체크하신 뒤,

'vim work.txt'

명령어를 통해 파일을 열어 master content4라고 입력 후, 저장해주세요.

이제

'git commit -am "master content 4"'

명령어를 통해 스테이징과 커밋을 동시에 해줄께요.

 

그럼 현재는 어떻게 되었을까요?

 

 

다음과 같은 형태로 되어있을 것입니다.

 

 

브랜치 합치기(병합하기)

 

그럼 이제 브랜치를 분기하는 법을 알아보았으니,

병합도 해볼까요?

위 분기했던 예를가지고, 이렇게 저렇게 자유자재로 연습해보세요.

익숙해지는데 꽤 시간이 걸립니다.

그럼 이제 병합하는 법을 알아보겠습니다.

예를들어, 위 분기를 저렇게 나누어했는데

Apple branch와 google 브랜치 ms브랜치가 각각 work4를 다른 형태로 했다고 가정합시다.

그리고 나서 어떠한 이유에서, 다시 Master브랜치로 합치려고합니다.

바로 시작해보겠습니다.

 

우선 병합하는 명령어는 'git merge 병합할 브랜치명' 입니다.

 

셋팅해보겟습니다.

우선 홈디렉터리로 돌아가서 다시 디렉토리를 생성하고 파일을 만들어보겠습니다.

아래 명령어를 순서대로 입력하시면됩니다.

'cd ~'

'git init manual-2'

'cd manual-2'

'vim work.txt'

'git add work.txt'

'git commit -m "work 1"'

 

 

자, 이제 o2 라는 브랜치를 생성하겠습니다.

'git branch o2'

 

그리고 다시 마스터브랜치에서, master.txt파일을 만들겠습니다. 그리고 work2라고 입력할게요.

'vim master.txt'

'git add master.txt'

'git commit -m "master work2"'

 

자 여기까지하면,

현재상황은

마스터브랜치에는 work 1과, master work2 두개가 모두 존재합니다.

하지만, 중간에 만든 o2 브랜치에는 work 1만 존재하게됩니다.

 

맞죵?

 

이제 o2브랜치로 체크아웃하겠습니다.

'git checkout o2'

 

그리고 o2만의 작업을 해볼까요?

'vim o2.txt'

'git add o2.txt'

'git commit -m "o2 work 2"'

 

자 그럼 현재상황을 다시한번 돌아보겠습니다.

마스터브랜치에는 work1과 master work2가 존재하고,

o2브랜치에는 work1과 o2 work 2가 존재합니다.

 

이제 o2브랜치를 마스터브랜치에 병합하기 위해서, 마스터 브랜치로 체크아웃하겠습니다.

'git checkout master'

 

그리고 병합해보겠습니다.

'git merge o2'

 

"Merge branch o2" 라는 메세지가 나타나면 병합이 잘 된 것입니다.

 

그럼 이제 마스터 브랜치에는 work1, master work2, o2 work 2 모두가 존재할 것입니다.

 

만약 같은 파일을 수정할 경우 간혹 충돌(Conflict)문제가 발생하게 되는데요,

이럴 경우, vim편집기로 직접 들어가 해당 부분을 원하는대로 수정한 뒤, 재저장하고 다시 병합하면 해결됩니다.

 

그리고 병합이 끝난 경우, 병합이 끝난 브랜치를 삭제하고 싶어하는 경우도 있습니다.

브랜치를 삭제하는 명령어는

'git branch -d o2'

처럼 o2 브랜치를 삭제하는 명령어입니다. -d옵션을 붙여주면 delete기능을 수행합니다.

 

 

 

- E N D - 

 

 

'Web Development > Github' 카테고리의 다른 글

[4장] Github 백업하기  (0) 2020.07.14
[2장] Git 저장소만들기 & 버전관리  (0) 2020.07.05
[1장] Git & Github 개요  (0) 2020.07.05