Git과 Github (branch) 사용해보기

모두의희망·2022년 12월 16일
0

Git, Github

목록 보기
4/4
post-thumbnail

Branch

  • 브랜치는 버전 관리와 소프트웨어 구성 관리에서 버전 관리 하에 놓인 오브젝트를 복제하는 과정, 또는 복제된 오브젝트들을 의미한다.
  • 즉 분기점을 생성하여 독립적으로 코드를 변경할 수 있도록 도와주는 모델이다.


Branch를 사용하는 이유?

  • 우리가 협업 프로젝트를 할 때에는 branch를 사용하게 되는데요. 이는 master(main)에서 바로 코드를 작성하거나 수정하는 것이 좋지 않기 때문입니다.

  • 다시 말하지만 브랜치는 독립적으로 어떤 작업을 진행하기 위한 개념입니다. 우리가 만드는 브랜치들은 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있습니다.

  • 또한 이렇게 만들어진 브랜치는 다른 브랜치와 병합(Merge)함으로써, 작업한 내용을 다시 새로운 하나의 브랜치로 모을 수 있습니다.

  • 브랜치(Branch)를 통해 하나의 프로젝트를 여러 갈래로 나누어서 관리할 수 있습니다. 각각의 독립된 Branch에서 마음대로 소스코드를 변경하여 작업 한 후 원래 버전과 비교하여 또 하나의 새로운 버전을 만들어 낼 수 있게 됩니다.


Merge(브렌치 병합)

  • 그렇다면 우리가 브랜치로 작업을 한 후에 어떻게 다시 하나의 코드로 만들 수 있을까요?
    그렇게 하려면 branch를 합쳐야 하는데요 이것을 merge라고 합니다 master에서 병합합니다.

  • 여기서 Master 브렌치란 브렌치중에서 으뜸이 되는 브렌치입니다. 즉 첨에 브렌치를 만들때 master의 모든 내용이 branch로 넘어가게 됩니다. 또한 해당 프로젝트에 대해서 결과물이라 할 수 있는 코드들이 올라라가는 브렌치라고 보시면 됩니다.


Branch의 충돌(Conflict)

  • Git 을 이용하여 협업을 할 때, 브랜치가 여러개일 가능성이 있는데 이 여러명이 동시에 같은 브랜치의 같은 내용을 접근하고 수정했을때 충돌이 발생합니다.
  • 충돌이 일어난 경우 개발자들 끼리 모여서 의논을 통해 충돌된 부분을 지우고 수정하여 해결합니다.

Branch 관리 명령어

1. 브렌치 생성 및 조회

git branch //모든 브랜치 조회
git branch 브랜치명 //브랜치 생성

2.브랜치 전환하기

git checkout 브랜치명 //이전 버전 브랜치 명으로 이동
git switch 브랜치명 //최신버전 브랜치 명으로 이동

3. 브랜치 히스토리 조회

git log //branch들의 히스토리 조회

4.브랜치 병합하기

git merge 브랜치명 //main(master)에서 병합하기

5.병합한 후 남은 브랜치 지우기

git branch -D 브랜치명 //브랜치 지우기


실제 예시

ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (main)
$ git branch
* main

git branch를 통해 조회를 한다.


ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (main)
$ git branch html-init

html-init이라는 branch를 만든다.


ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (main)
$ git branch
  html-init
* main

html-init이 만들어 졌는지 확인


ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (main)
$ git switch html-init
Switched to branch 'html-init'

html-init branch로 이동


ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (html-init)
$ git add index.html

ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (html-init)
$ git commit
[html-init 04f157d] feat: Initialize index.html
 1 file changed, 8 insertions(+)

ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (html-init)
$ git branch
html-init
  main

ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (html-init)
$ git switch main
Switched to branch 'main'
Your branch is up to date with 'origin/main'.

git add -> git commit 후 git switch main 으로 이동 한다.


ghkst@DESKTOP-8SB8F5E MINGW64 ~/Documents/dev/branch-practice (main)
$ git merge html-init
Updating 1332cc8..04f157d
Fast-forward
 index.html | 8 ++++++++
 1 file changed, 8 insertions(+)

마지막으로 main에서 html-init branch를 병합한다.

profile
개발을 진정성 있게 다가가겠습니다.

0개의 댓글