Git

개발자들이 협업하기에 최적의 툴, 소프트웨어 개발 시 동일한 소스코드를 함께 공유하고 다룬다.
(버그를 수정하거나, 새로운 기능을 만들어 추가한다.)

기존의 소스 코드를 해치지 않으면서 다른 작업을 시도해보고 싶을 때 브랜치 기능을 활용할 수 있습니다. (feature) 브랜치에서 완성한 코드를 기존 소스 코드에 반영해도 문제가 없다면 그 때 병합(merge)할 수 있습니다.


Branch란?

브랜치란 독립적으로 어떤 작업을 진행하기 위한 개념

Branch의 장점

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

master 또는 main 이라는 이름을 가진 통합 브랜치에 뿌리를 두고, 각각의 브랜치가 갈라져 나온다.

나누어진 브랜치에서는 각자 독립적인 작업 영역(저장소) 안에서 마음대로 소스코드를 변경할 수 있습니다. 분리된 작업 영역(브랜치)에서 변경된 내용들은 다른 브랜치와 병합(merge)해 새로운 하나의 브랜치로 모을 수 있습니다.

여러명이 동시에 작업을 할 때 다른 사람의 작업에 영향을 주지 않도록, 자신의 작업 전용 브랜치를 만듭니다. 작업 진행 후 통합 브랜치에 병합해 변경 사항을 적용합니다. 이를 통해 다른 브랜치의 작업에 영향을 받지 않고 독립적으로 수행해 그 결과를 모아나가게 됩니다.


브랜치의 종류

통합 브랜치 (Integration Branch)

배포될 소스 코드가 기록되는 브랜치
Github Repository를 생성하게 되면 기본적으로 main 브랜치가 생깁니다.
(해당 프로젝트의 모든 기능이 정상적으로 작동하는 상태의 소스코드를 담습니다.)

피처 브랜치 (Feature Branch)

기능 추가, 버그 수정과 같은 작업을 위한 브랜치
피처 브랜치의 작업이 완료되면 통합 브랜치에 병합하는 방식으로 진행됩니다.


브랜치 명령어 모음

새로운 브랜치 생성

git branch (새로운 브랜치 이름)

새로운 브랜치 생성 후 해당 브랜치로 전환

git switch -c (새로운 브랜치 이름)
git checkout -b (새로운 브랜치 이름)

브랜치 목록 확인

git branch

브랜치 목록과 각 브랜치의 최근 커밋 확인

git branch -v

브랜치 삭제

git branch -d (삭제할 브랜치 이름)
git branch -d 
// 삭제할 브랜치 이름을 입력하지 않는 경우 현재 사용 중 브랜치를 강제 삭제하게 됩니다. (주의)

브랜치 병합

  • master 브랜치로 기타 브랜치(dev)와 병합 할 때 (master ← dev)
git checkout master
git merge dev
// master 브랜치로 전환 후, merge dev를 통해 병합한다.

로그에 모든 브랜치를 그래프로 표현하기

git log --branches --graph --decorate

아직 commit 하지 않은 작업을 스택에 임시로 저장

git stash

git 브랜치 기능 활용하기

Fork, Clone

Remote에 생성한 프로젝트 Repository를 각자의 Repository로 가져오기

(Fork를 통해 각자의 Repository로 가져오고, git clone 명령어를 통해 local로 가져올 수 있습니다.)

git checkout -b (새로운 브랜치 이름)

=== git switch -c (새로운 브랜치 이름)
브랜치를 생성하고 생성한 브랜치로 이동하기

기본적으로 개발을 진행하는 과정에서 main 브랜치가 아닌 dev 브랜치를 하나 만들어 작업을 하는 경우가 많습니다.

새로운 브랜치로 이동 후 Remote Repository에 반영하기 위해 git push origin (새로운 브랜치 이름) 명령어를 입력해 줘야 합니다.

git branch

브랜치가 잘 생성됐는지 확인 할 수 있는 방법입니다.

git branch

를 통해서 branch를 확인 할 수 있고 q를 눌러서 종료할 수 있습니다.

git merge

merge(병합) 하기 위해서는 병합 될 브랜치로 이동해야 합니다.

feature/login 브랜치에 feature/login-oauth를 병합시키기 위해 login으로 이동 후

git merge feature/login-oauth

명령어를 통해서 병합합니다.

ex) login 브랜치에 변화가 있는 경우

만일 login 브랜치에 변화가 있는 경우 login-oauth에 병합하는 방법도 있습니다.

브랜치를 login-oauth로 이동 후 병합 할 수 있습니다.


merge와 rebase의 차이

merge

변경 내용의 이력이 모두 남아 있기 때문에 이력이 복잡해집니다.

rebase

merge처럼 통합을 목적으로 하지만, 특정 시점으로 브랜치가 가리키는 곳을 변경합니다.
(다른 커밋에서 충돌이 없는 경우 가능하다.)

Remote Repository에 업로드하기

git push origin feature/login

Remote Repository에 업로드하기 위해서는 push 해야 한다.

하지만 feature/login은 main이 아니기 때문에 코드 리뷰 후 변경사항을 Pull Request 해야 합니다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글