본문 바로가기
Git/Git 명령어

[Git] Git의 꽃, Branch - Git 명령어 4

by 볼링치는 개발자 2021. 1. 31.
반응형

이번 포스팅에서는 Git의 꽃인 Branch에 대해 포스팅해보려 합니다.


이번 포스팅 명령어 Preview

git branch [브랜치 이름]: 입력한 브랜치 이름으로 브랜치 생성

git checkout [브랜치 이름]: 입력한 브랜치 이름으로 분기, 브랜치 이동

git branch -d [브랜치 이름]: 입력한 브랜치 이름으로 만들어진 브랜치 삭제

git merge [브랜치 이름]: 현재 브랜치에 [브랜치 이름] 브랜치를 병합


브랜치를 사용하는 이유

Git을 사용하여 협업이나 프로젝트를 진행하던 중, 새로운 기능을 개발해보고 싶거나, 좋은 아이디어가 생각나 추가하고 싶을 때가 생길 수 있습니다.

 

그 아이디어를 프로젝트에 추가해보고 싶어 개발을 해 메인 프로젝트에 추가했습니다.

 

하지만 그 아이디어로 인해 프로젝트가 정상 작동하지 않고 오히려 발목을 잡게 되었습니다.

 

이런 아이디어를 메인 프로젝트를 방해하게 되는 꼴이 됩니다.

 

이럴 때 사용하는 것이 Git의 branch입니다.

 

적용해보고 싶은 아이디어를 메인 프로젝트에 바로 반영하지 않고, 브랜치를 생성해 아이디어를 메인 프로젝트에 반영해 보는 것입니다.

 

Branch는 분기라는 뜻입니다. 혹은 나뭇가지라는 뜻이 있는데, 나무를 생각해보면, 중앙에 두꺼운 기둥을 중심으로, 여러 개의 잔 가지들이 펼쳐나갑니다.

 

가운데 주축이 되는 기둥이 main브랜치이고, 잔가지들이 다른 브랜치인데 여기서 새로운 기능을 개발해 추가해 보는 것입니다.

 

일반적으로 Git 저장소를 생성하면 메인 브랜치가 생성됩니다. 이는 해당 프로젝트의 배포가 가능한 상태를 담고 있습니다.

 

브랜치에는 두가지 종류가 있습니다.

  • 통합 브랜치: 배포가 가능한 수준의 브랜치, main 브랜치를 의미함
  • 토픽 브랜치: 특정한 기능을 위해 만들어진 브랜치. main과 다른 브랜치

브랜치 명령어

git branch를 입력해 해당 저장소에 무슨 브랜치가 있는지 확인할 수 있습니다.

git branch명령어

현재 git branch명령어를 입력해보면 master브랜치 하나만 있는것을 알 수 있습니다.

 

git branch [브랜치 이름] 명령어를 입력해 생성하고자 하는 브랜치의 이름을 지어줍니다.

git 브랜치 생성

git branch coding 을 입력해 coding이라는 브랜치를 만들고, git branch 명령어를 통해 생성된 coding 브랜치를 확인합니다.

 

 

git checkout [브랜치 이름] 을 입력해 원하는 브랜치로 브랜치를 변경할 수 있습니다.

 

git checkout

콘솔 창을 확인해보면 (coding)브랜치로 브랜치가 변경된 것을 확인할 수 있습니다.

 

현재 coding 브랜치에서 hello_world_coding 텍스트 파일을 다음과 같이 생성해 주었습니다.

 

 

추가한 파일을 coding branch에서 git add를 통해 추가해주고, git commit으로 파일을 stage에 올려주었습니다.

 

 

 

git push를 통해 원격 저장소에도 반영하려 했으나, coding 브랜치가 현재 upstream가 없기 때문에 추가해주어 push 해주었습니다.

 

 

이렇게 hello_world_coding파일을 coding브랜치에 push까지 완료해주었습니다.

이를 원격 저장소에 적용하기 위해 master 브랜치로 이동해 merge 해주고, master 브랜치에서 push 해주면 원격 저장소에 반영이 됩니다.

 

git merge [브랜치 이름]: 현재 브랜치에, [브랜치 이름]에 입력한 브랜치를 병합시킨다.

 

git merge
git push

이렇게 master 브랜치에 coding 브랜치를 병합하고 push 해주면, 원격 저장소에 hello_world_coding파일이 추가된 것을 확인할 수 있습니다.

 

여태까지 실습한 작업을 이해하기 쉽게 그림으로 표현하면 다음과 같습니다.

 

반응형

댓글