branch

givemcdonalds·2023년 5월 24일
0

AIgrapher

목록 보기
2/5

git으로 협업 프로젝트를 진행하기 위해서 간단한 자습서를 만들려고 한다.

branch

  • 동시에 여러 개발자들이 프로젝트에서 각기 다른 기능을 개발 가능하게 함
  • 서로 다른 브랜치는 작업 시 서로에게 영향을 받지 않음
  • 기본적으로 git 저장소를 만들면 자동으로 main 브렌치가 생성

통합 브랜치

  • 배포가 가능한 수준의 브랜치
  • 일반적으로 main 브랜치를 의미

main branch

  • default 값이라고 할 수 있음
  • 항상 안정화된 버전이 되어야 함

토픽 브랜치

  • 특정한 기능을 위해 만들어진 브랜치
  • 위의 사진에서는 Feature1, Feature2 가 해당함

git branch 생성

git branch를 이용한 생성

% git branch [branch name]
  • 위의 방법은 브랜치는 생성되고 전환은 되지 않음

git checkout -b를 이용해 생성과 전환 동시 처리

% git checkout -b "branch name"
  • 브랜치가 없을 때는 브랜치를 생성하고 전환함( 브랜치가 있다면 전환함)

git switch -c를 이용해 생성과 전환 동시에 처리

% git switch -c "branch name"
  • checkout 과 같은 기능

git branch 전환

switch 로 전환

  • main branch로 전환하려면
% git switch "main"
  • git switch는 브랜치가 없는 경우 전환하지 않음

브랜치가 없다면 위의 git switch -c 를 이용해야함

checkout 로 전환

% git checkout [branch name]
  • git checkout 또한 브랜치가 없는 경우 전환하지 않음
    브랜치가 없다면 위의 git checkout -b 를 이용해야함

git switch와 git checkout의 차이는?

  • git checkout에는 많은 옵션이 존재함, 옵션이 많아서 커밋 단위 전환부터 브랜치 전환까지 지원함
  • 하나의 명령어에 많은 옵션을 넣으면 사용성을 떨어트림
  • git switch는 git checkout의 브랜치 관련 명령어를 대체하기 위해 나옴

  • git switch 는 branch 조작만을 위한 명령어

git branch 삭제

git branch -d

% git branch -d [branch name]
% git branch --delete [branch name]
  • 원 브랜치에 비해 변경사항이 없을 때만 사용 가능, 브랜치에 변경 사항이 있는 경우 오류 발생
  • git 을 merge하거나 git branch -D를 이용해 강제 삭제해야됨

git branch -D

% git branch -D [branch name]
% git branch --delete --force [branch name]
  • 강제 삭제함

git branch 이름 변경

git branch -m 이용한 현재 브랜치 이름 변경

  • -m 은 --move의 약자로 Move/Rename을 위한 명령어

원하는 브랜치로 전환(혹은 생성)

% git branch switch [branch name](branch switch -c [branch name])

현재 브랜치의 이름을 변경

% git branch -m [rename branch]

git branch -m 이용한 다른 브랜치의 이름 변경

% git branch -m [branch name][rename branch]
  • 작업 중일 경우 매우 유용함

git branch 병합

git merge

  • 다른 branch를 합치는 과정을 뜻함
  • 기본 단위는 branch이며 commit 단위로 합치기는 불가능

Fast Forward Merge

  • 가장 기본적인 merge 임
  • 현재 브랜치의 HEAD가 대상 브랜치의 HEAD까지로 옮기는 merge
% git switch [현재 branch]
% git merge [대상 브랜치]
  • 중간에 변경이 없을 때만 동작
  • 중간에 다른 커밋이 껴있고 해당 커밋이 같은 부분을 수정했다면 conflict이 일어나면서 동작하지 않음
profile
운동 좋아하는 개발자

0개의 댓글