TIL 60일차

안광의·2021년 9월 14일
0

Today I Learned

목록 보기
60/64
post-thumbnail

시작하며

오늘은 Section 1에서 처음으로 Git에 대해서 학습한 이후에 처음으로 추가적인 부분인 Branch에 대해서 학습하였다. 예전에 배운 내용을 복습하면서 새로운 내용에 대해 이해하면서 실제 현업이라 프로젝트 시에 유용하게 활용할 수 있는 Branch에 대해 배울 수 있었다.

Git

브랜치

정의
브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념으로, 개발을 하다 보면 한 페이지 안의 여러 기능을 따로 구현하기 위해, 코드를 여러 개로 복사해야 하는 일이 자주 생기게 된다. 브랜치 기능을 활용하면, 코드를 통째로 복사한 후 원래 코드가 변경될 우려 없이 독립적으로 개발할 수 있고, 각각의 브랜치는 다른 브랜치의 영향을 받지 않기 때문에, 여러 작업을 동시에 진행할 수 있다.

  • 한 소스코드에서 동시에 다양한 작업을 할 수 있게 해준다.
  • 소스코드의 한 시점과 동일한 상태를 만들고, 브랜치를 넘나들며 작업을 수행할 수 있다.
  • 각각의 브랜치에서 생긴 변화가 다른 브랜치에 영향을 주지 않고 독립적으로 코딩을 진행할 수 있다.

여러 명이서 동시에 작업을 할 때에 다른 사람의 작업에 영향을 주거나 받지 않도록, 먼저 통합 브랜치에서 자신의 작업 전용 브랜치를 만들고, 각자의 브랜치에서 맡은 영역에 대한 작업을 진행한 후, 작업이 끝난 브랜치는 통합 브랜치에 병합해서 변경 사항을 적용한다. 이를 통해 다른 브랜치의 작업에 영향을 받지 않고 독립적으로 특정 작업을 수행하고 그 결과를 하나로 모아 나가게 되며, '작업 단위', 즉 브랜치로 그 작업의 내용들이 모두 기록되기 때문에 문제가 발생했을 때 원인이 되는 작업을 찾아내거나 그에 따른 대책을 세우기 쉬워진다.

브랜치 종류

  • 통합 브랜치(Integration Branch)
    배포될 소스 코드가 기록되는 브랜치로 Github Repository를 생성하게 되면 기본적으로 main 브랜치가 생기게 된다. (기존 Repository의 경우 master로 되어 있는 곳도 많음) 해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드가 담겨 있다.

  • 피처 브랜치 (Feature Branch)
    기능 추가, 버그 수정과 같이 단위 작업을 위한 브랜치로, 통합 브랜치로부터 만들어내며, 피처 브랜치에서 하나의 작업이 완료가 되면 다시 통합 브랜치에 병합하는 방식으로 진행됩니다. 토픽 브랜치라고도 한다.

브랜치 명령어

  • 새로운 브랜치 생성 : $ git branch 새로운 브랜치 이름
  • 새로운 브랜치 생성 후 해당 브랜치로 전환: $ git switch -c 새로운 브랜치 이름 , $ git checkout -b 새로운 브랜치 이름
  • 브랜치 목록 확인 : $ git branch
  • 브랜치 목록과 각 브랜치의 최근 커밋 확인 : $ git branch -v
  • 브랜치 삭제 : $ git branch -d 삭제할 브랜치 이름
  • 병합하지 않은 브랜치 강제 삭제 : $ git branch -D
  • 브랜치 전환 : $ git switch 브랜치 이름 ,$ git checkout 브랜치 이름
  • 브랜치 병합 : master 브랜치로 dev 브랜치를 병합할 때 (master ← dev)
    1. $ git checkout master
    2. $ git merge dev
  • 로그에 모든 브랜치를 그래프로 표현 : $ git log --branches --graph --decorate
  • 아직 commit 하지 않은 작업을 스택에 임시로 저장 : $ git stash

마치며

Git은 자주 사용하는 명령어만 사용하고 GUI 툴인 Gitkraken을 사용하고 있어서 잊어버리고 있는 내용이 많았는데 이번 챕터를 통해 이전의 내용을 상기하고 협업에 필수적인 기능인 Branch에 대해서 배울 수 있었다. Section 3의 마지막 부분으로 진행되면서 확실히 프로젝트에 대비한 내용을 학습하고 있다는 생각이 든다. 프로젝트의 주제와 어떻게 진행하고 어떤 라이브러리나 프레임워크를 사용하고 파트를 어떻게 나누는 것이 좋을지 생각하면서 챕터를 진행해야 겠다고 생각이 들었다.

profile
개발자로 성장하기

0개의 댓글