티스토리 뷰
이 글은 생활코딩 GIT CLI 강의를 바탕으로 쓰여졌습니다.
branch의 뜻은 '가지'이다. 즉, 같은 버전 아래에서 여러가지의 '가지'를 친다고 생각하면 된다.
예를들면 manual 이라는 파일을 생성했을 때 , apple, google, ms가 이 manual의 일부 내용을 공유한다고 하자. 하지만 당연히 apple에만 있는 내용이 있을 것이고, google에만 있는 내용이 있기마련이다. 그렇다고 apple manual 따로, google maunal 따로 ms manual 따로..이런식으로 할 순 없다. 너무 복잡하기 때문이다.
이를 위한 기능이 바로 'branch'이다.
특정 버전에서 가지처럼 갖가지 다른 내용들이 생성되는 것이다. 그리고, 각각의 가지들은 일부분을 공유하지만, 서로의 영역에 침범 할 수 없다.
먼저 몇가지 명령어를 알아보자.
git branch 브랜치 이름
일단 branch를 생성하려는 버전에서 'git branch 브랜치 이름' 이라고 치면 브랜치가 해당 버전에서 생성된다. 이 버전은 은 앞으로도 해당 브랜치의 '부모'가 되는 것이다.
예를들면 work.txt 가 커밋을 3번하여 work1 work2 work3가 되었을 때, work3일 때 branch를 생성하면 work3는 branch의 '부모' 버전이되는 것이다. 즉 생성된 브랜치는 해당 부모버전을 바탕으로 그 위에 새로운 내용이 추가되는 것이다.
git checkout 브랜치이름
해당 branch로 들어가는 것이다. 디폴트로는 master 브랜치를 가리키고 있었지만, checkout 명령어로 원하는 브랜치로 들어갈 수 있다. 여기서 해당 브랜치에서 하고싶은 내용을 하면된다. 이 때 우리가 master에서 계속해서 관리하던 파일이름이 work.txt 이고, master에서 work4버전을 커밋했다고 치자. 하지만 위에서 언급한 것처럼 work3가 브랜치들의 '부모'이기 때문에 해당 branch에서 들어온후, work.txt 파일을 보면 work4의 내용은 생성되어있지 않다. ( work3에서 생성된 브랜치로 들어오게 되면서 work3 버전, 즉 부모버전으로 되돌아 온 것이다.)
이제 여기서 우리가 work.txt 파일에 어떠한 내용을 추가해도 master 혹은 다른 브랜치에서는 보이지 않는다. 오로지 '해당 브랜치' 에 들어왔을 때 , 해당 브랜치에서 변경한 내용이 보인다.
파일을 생성해도 마찬가지이다. 우리가 apple branch에 들어왔고, apple.txt라는 파일을 생성했다고 해도, 다시 master로 돌아가거나 다른 브랜치를 checkout했을 때 apple.txt파일은 보이지 않는다
git log --all
현재 브랜치의 로그를 보여준다. master, head를 보여주고 지금 어떤 브랜치에 들어와있고, 각각의 브랜치의 부모가 어느 버전인지도 보여준다.
아래는 work.txt 파일을 work3 버전까지 커밋 후, work3 버전에서 apple, google, ms 브랜치를 생성하는 예제이다. 각각 브랜치에서는 work.txt 파일에 "브랜치 이름 work 4 " 라는 내용을 추가 , 커밋하였고 또 별도로 "브랜치이름.txt" 라는 파일을 생성해주었다.
이게 바로 브랜치의 매우매우 기초적인 흐름이다.
아래는 위의 브랜치 과정을 정리한 것 이다.
( 위 그림에서는 work 4 (master)를 보기 이해하기 편하려고 브랜치들의 맨 뒤에 뒀지만 사실은 브랜치 생성 전에 commit 했으므로, work3 바로 뒤에 와야한다 )
'baby steps > Git' 카테고리의 다른 글
Git 기초지식 03 / git remote, git push, git pull & git clone (0) | 2020.03.28 |
---|---|
Git 기초지식 02 / merge와 conflict에 대해서 알아보자 (0) | 2020.03.23 |
Git 기초지식 00/ 기초 버전관리 명령어 (0) | 2020.03.08 |