이번에는 깃에서 반드시 필요한 '브랜치(Branch)'라는 것에 대해 알아보고자 한다.
우선 브랜치 라고 검색하면 '나뭇가지'라는 뜻이 나온다.
버전을 만들때 나뭇가지처럼 여러 갈래로 뻗어져 나가는 것을 표현하기 위해
브랜치라는 용어로 정리한 것 같다.
그럼 브랜치가 필요한 이유에 대해서 알아보자.
(여기서 브랜치의 개념에 대해서도 나온다.)
만약 회사에서 하나의 프로그램을 만들었다고 생각해보자.
그럼 그 프로그램을 여러 회사들에게 판매해야 하는데
각각의 회사는 조금씩 원하는 사항이 다를 것이고, 그것에 맞추어서 버전 업데이트를 해야 한다.
A라는 회사가 있고 B라는 회사가 있다고 가정해보자.
A라는 회사는 content 1이라는 내용을 추가하길 원하고
B라는 회사는 content 2라는 내용을 추가하길 원한다고 가정해보자.
그럼 원본 파일에서 하나의 나뭇가지처럼 뻗어나가 두 개의 새로운 파일을 만들 것이다.
그 이후에 추가로 원하는 것이 있으면 계속해서 추가하면 된다.
그리고 마지막에 병합하면 되는데 이때 사용되는 것이 브랜치라는 개념이다.
(깃에서는 서로 중복되는 내용이 있으면 곧바로 알려주기도 한다.)
우선 이렇게 간단하게 알아두고 브랜치를 공부해본다.
(공부하는 입장이기에 이게 완벽한 브랜치 개념이 아닐 수 있다.)
회사에서 협업할 때 사용되는 개념이니 꼭 알고 넘어가야 한다.
---------------------------------------------------------------------------------------------------------------------
우선 새 디렉터리를 만들고 해당 디렉터리로 이동하자
'mkdir manual'
'cd manual'
이제 그 디렉터리를 저장소로 만들고 확인한다.
이제 여기에 test.txt 파일을 만들어서 실습해보자.
'vim test.txt'
그리고 content 1이라는 내용을 입력하고 저장한 후
커밋한다.
'git add test.txt'
git commit -m "test 1"
이어서 vim으로 test파일에 content 2를 입력 후
메시지를 "test 2"로 입력한 후 커밋,
같은 방식으로 test 3까지 커밋한다.
가장 최신 커밋이 test 3이다.
여기서 HEAD -> master 표시가 있는데
master는 브랜치 이름이고, HEAD는 최신 커밋을 가리킨다는 뜻이다. 즉,
master 브랜치가 가장 최신 커밋인 test 3을 가리키고 있다는 뜻이다.
여기까지 처음에 만든 기획서나 프로그램이라고 가정한다.
브랜치를 만들거나 확인하는 명령어
'git branch'
master는 특별한 브랜치로써 저장소를 만들 때 기본적으로 만들어진다.
(그동안 master라는 브랜치에서 작업했다고 생각하면 된다.)
새로운 브랜치를 만들려면 뒤에 브랜치 이름을 적으면 된다.
'git branch samsung'
samsung 브랜치가 잘 만들어졌음을 확인할 수 있다.
(* : 현재 작업하는 브랜치를 나타낸다.)
이제 git log를 확인해보면 HEAD -> master , samsung이라고 돼있을 것이다.
이 뜻은 저장소에는 master, samsung 두 브랜치가 있고
현재 작업 중인 브랜치는 master 브랜치라는 의미이다.
이런 식으로 총 4개의 브랜치를 만든다.
이제 브랜치를 오가는 방법을 알아보자.
우선 test 파일에 content 4를 입력하고 커밋해보자.
이처럼 최신 커밋은 test 4에 들어가고 master 브랜치에만 적용되어 있다.
(조금 더 간편하게 보는 명령 : 'git log --oneline')
현재 브랜치에서 다른 브랜치로 옮길 때 쓰는 명령어로는 checkout 명령어가 있다.
다른 브랜치로 옮겨보자.
'git checkout samsung'
master 브랜치에서 samsung 브랜치로 이동하였다.
이것을 'samsung 브랜치로 체크아웃한다.'라고 이야기한다.
이후 'git log --oneline'으로 확인해보자.
samsung 브랜치는 test 3에서 멈춰있는 것을 볼 수 있다.
(cat 명령을 사용해보면 content3 까지만 나옴을 알 수 있다.)
즉, master브랜치에 추가된 커밋 (content4) test 4는 다른 브랜치에게 영향이 없음을 알 수 있다.
'Git&Github' 카테고리의 다른 글
원격 저장소 깃허브 (0) | 2020.03.13 |
---|---|
브랜치(branch)(ⅱ) (0) | 2020.03.12 |
커밋(commit)상태와 복구 (0) | 2020.03.11 |
-깃 버전관리(Commit)-...(ⅲ) (0) | 2020.03.10 |
리눅스 명령(자주 사용하는 기초명령어)...(ⅱ) (0) | 2020.03.06 |