본문 바로가기
Git using(깃 사용하기)

깃(git) 브랜치 (branch)와 업스트림 (upstream)(-u , --set-upstream)

by 코딩하는 동현😎 2022. 4. 18.

명령어 요약

git branch 브랜치이름 

현재 커밋을 분기점으로 브랜치를 생성합니다.

 

git branch 브랜치이름 커밋ID

지정된 커밋에 개발분기점으로 잡아 브랜치를 하나 생성합니다.

'깃 커밋 포스트에 있듯이, git log 를 입력해서 나오는 id에서 7자리까지가 id입니다.'

 

git rev-parse 브랜치이름

그 브랜치가 어떤 커밋에 있는지(긴 id로 출력)를  알수있습니다

 

git branch -v

가지고 있는 모든 브랜치와 그 브랜치의 커밋ID를 볼 수 있습니다.

 

git branch -r

원격 서버의 모든 브랜치를 볼 수 있습니다.

 

git checkout 브랜치이름

그 브랜치로 이동(현재브랜치에서 커밋을 해야 이동할 수 있습니다! git status로 확인)

 

git checkout -

(이동취소) 이전 브랜치로 이동

 

git log --graph--all

로그를 출력할때 브랜치 흐름을 볼 수 있습니다.

 

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

브랜치를 새로 만들고 그 브랜치로 이동(checkout)을 한번에 해줍니다.

 

git push 원격저장소이름 원격브랜치

원격 저장소의 특정브랜치에 내 현재 로컬 브랜치를 업로드 시킵니다.

branch 생성 -> push 서버 업로드

(업스트림: git push -u 원격저장소이름 원격브랜치)

 

git branch -d 브랜치이름

브랜치 삭제 : 브랜치는 스테이지 상태가 깨끗할때. 즉 커밋이 된 상태에서만 삭제할 수 있습니다.

 

git branch -D 브랜치이름

커밋여부와 상관없이 브랜치 강제삭제(위험!!!)

 


브랜치는 나뭇가지 , 지사 , 분점 등 줄기 하나에서 뻗어 나온 갈림길을 의미합니다

큰 나무 줄기에서 작은 줄기가 뻗어나가는 것처럼 저장공간 하나에서 또 다른 가상 저장 공간을 만드는 것입니다.

커밋은 파일의 수정 이력을 관리하는데 사용한다면 , 브랜치는 프로젝트를 독립적으로 관리하는데 사용합니다.

 

 

개발자는 쉽게 가상 폴더인 브랜치를 통해 브랜치를 이동하면서 프로젝트를 수행할 수 있습니다.

 


브랜치 생성하면 포인터만 있는 브랜치가 생성됩니다.

일반적으로 브랜치 명령을 실행하면 현재 커밋을 가리키는 HEAD기준으로 '개발 분기점'이 생성됩니다.

기존 브랜치의 소스 코드에 영향을 주지 않고 새로운 작업을 할 수 있습니다.

위 이미지는 기업에서 흔히 쓰는 성공적인 브랜치 모델입니다.

  • master : 베포가능한 상태만을 관리
  • develop : 통합 브랜치의 역할. 이 브랜치를 기반으로 개발을 진행합니다.
  • feature : 새로운 기능 개발 및 버그 수정
  • release : 릴리스를 위한 최종적인 버그 수정등의 개발(완료되면 master와 병합)
  • hotfix : 베포한 버전에 긴급하게 수정을 해야 할 필요가 있을경우 , master에서 분기됩니다.

AHEAD

AHEAD는 서버로 전송되지 않은 로컬 커밋이 있는 것입니다.

커밋은 항상하는데 서버로 push를 안한거죠!

커밋할때마다 수시로  push 해주면 방지 할 수 있겠죠?


BHEAD

BHEAD는 로컬 저장소로 내려받지 않은 커밋이 있는 것입니다.

이 경우는 협업할때 일어나는데요, 다른 개발자가 코드를 수정하고 커밋+push해서 서버의 커밋이 자신의 로컬 저장소 보다 더 최신 상태를 말합니다.

협업할때는 다른 사람이 코드를 수정할 수도 있으니까 수시로 pull해주는게 중요하겠죠?


업스트림

upstream과 downstream은 상대적인 개념이라 origin과 local을 기준으로 생각하면 origin이 upstream, local이 downstream이 됩니다. 그 이유는 push와 pull을 기준으로 생각했을 때 origin으로부터 local로 흐르는 관계가 형성되기 때문입니다.

 

-u 가 --set-upstream을 의미합니다.

 

upstream을 한 번 설정하고 나면 다음부터는 git push 또는 git pull이라고 명령어만 입력해도 자동으로 origin의 master 브랜치로부터 push와 pull을 진행하는 이유가 upstream 옵션을 통해 해당 브랜치에서 upstream과 downstream 관계가 설정됐기 때문입니다.


 

원격 브랜치 생성 + 업스트림연결 (초기에 설정해줘야합니다.)

git push -u 원격저장소이름 원격브랜치

원격에 새로운 브랜치가 생성되고 그 원격브랜치가 로컬의 브랜치와 자동으로 업스트림 관계가 형성되고, 앞으로 git push만 해줘도 자동으로 업로드 됩니다.


기존에 원격브랜치에 업스트림연결 (이름이 달라도 됩니다!)

git branch -u 원격저장소이름/브랜치이름

예시) 로컬브랜치 bug와 원격의 bbb는 업스트림관계로 연결됐습니다.


git branch -vv

트래킹(업스트림 관계) 브랜치 목록을 볼 수 있습니다.

반응형

댓글