작업 tools/git

git 브랜치: 가져오기, 합치기, 삭제하기

yztech 2021. 9. 26. 08:06
반응형

이번에는 git의 브랜치 관련 명령들을 알아보겠습니다.

브랜치는 동일한 소스를 기반에서 다양한 버전을 만들어 낼 수 있는 기능으로, 여러 사람이 동시에 작업을 하거나, 조금씩 다른 버전을 만들어 테스트할 때 매우 유용한 기능입니다.

원격 브랜치 가져오기

원격 저장소의 branch를 로컬 저장소로 가져와야 하는 경우, 원격 저장소를 clone하던지, pull하면 원격 저장소의 branch도 받아질 것 같지만, master 브랜치 하나만 존재합니다.

따라서, 원격 저장소의 특정 branch를 가져오기 위해서는 git checkout -t를 사용해야 합니다.

원격 저장소 갱신

먼저 원격 저장소의 브랜치에 접근하기 위해 원격 저장소를 갱신해줍니다.

git remote update

원격 저장소 branch 확인

원격 저장소의 branch 리스트를 확인합니다.

git branch -r

아래와 같이 branch 리스트들이 출력됩니다.

  origin/HEAD -> origin/master
  origin/dev
  origin/master

로컬 저장소 branch 제거하기

만약 원격 저장소 branch와 동일한 이름의 로컬 저장소 branch가 있는 경우, git branch -d명령을 사용하여 제거합니다.

git branch -d dev

원격 저장소 branch 가져오기

git checkout -t를 사용하면, 원격 저장소의 branch 이름과 동일한 이름의 로컬 저장소 branch를 생성하고, 해당 branch 로 checkout합니다.

git checkout -b를 사용하면, branch 이름을 변경해서 가져올 수 있습니다.

git checkout -f를 사용하면 문제 발생해도 강제로 branch이름과 동일한 로컬 저장소 branch를 생성하고, 해당 branch로 checkout합니다.

 git checkout -t origin/dev
 git checkout -f -t origin/dev

브랜치 합치기, 병합하기

저장소 만들면 기본적으로 master 브랜치가 생성됩니다.
보통 다른 branch에서 개발 진행후, 완료되면 master가지로 와서 병합하게 됩니다.

checkout 명령을 사용하여 issue1이름의 branch 로 변경하는데, -b옵션을 사용하여 branch를 생성합니다.

git checkout -b issue1

해당 branch에서 개발을 진행한 후, 작업한 branch를 원격 저장소에 push하여 저장합니다.

git push origin issue1

작업이 완료되면 master 브랜치로 돌아옵니다.

git checkout master

issue1master에 merge (병합)합니다.

git merge issue1

완료되면 다음과 같이 fast forward되었다는 메시지와 함께 master가 issue1위치로 이동하게 됩니다.

Updating 1257027..b2b23c4
Fast-forward     
 myfile.txt |    1 +  
 1 files changed, 1 insertions(+), 0 deletions(-)  

branch -d 명령으로 임시 작업한 issue branch 를 삭제합니다.

git branch -d issue1

원격 브랜치 삭제하기

git에서 로컬 브랜치와 원격 브랜치를 삭제하는 방법을 알아보겠습니다.

지금 삭제할 브랜치 이름은 pub_master입니다.

방법 1: 원격 저장소의 브랜치 삭제

원격 저장소 origin에만 pub_master가 존재하고, local 저장소에는 없는 경우, push 명령을 이용해서 원격 저장소에 push하고, delete명령을 추가하여 브랜치를 삭제할 수 있습니다.

git push origin --delete pub\_master

삭제 전
삭제 후

방법 2: 로컬 및 원격 저장소의 브랜치 삭제

로컬 및 원격 저장소의 브랜치를 모두 삭제할 경우에는, branch -d 명령으로 local branch를 삭제하고, 원격 저장소에 push합니다.

git branch -d pub\_master 
git push origin pub\_master

삭제전
삭제후

Summary

command description
git checkout -b temp temp 브랜치 생성하고 switch
git branch 현재 브랜치 확인
git status 상태 확인
git add . 변경사항을 인덱스에 등록
git commit -m "temp branch" 커밋하여 로컬 저장소에 저장
git push -u origin temp 푸쉬하여 원격 저장소에 올림
git checkout master master로 돌아오기
git merge temp temp를 master에 병합
git branch -d temp temp 브랜치 삭제

 

push없이 local하게만 merge할 경우

command description
git checkout -b temp temp 브랜치 생성하고 switch
git branch 현재 브랜치 확인
git status 상태 확인
git add . 변경사항을 인덱스에 등록
git commit -m "temp branch" 커밋하여 로컬 저장소에 저장
git push -u origin temp 푸쉬하여 원격 저장소에 올림
git checkout master master로 돌아오기
git merge temp temp를 master에 병합
git branch -d temp temp 브랜치 삭제
반응형