본문 바로가기
DevOps/GitHub

Git(깃) 브랜치(Branch) 사용방법 및 명령어 || Git | Branch ||

by 개발이 체질인 나그네 2022. 10. 18.
반응형

 

Git Branch 란?  📑

독립적으로 어떤 작업을 진행하기 위한 개념입니다.

개발을 하다 보면, 한 페이지 안에 여러 기능을 따로 구현하거나, 이전 코드와 비교를 위해 여러 코드를 복사해야 하는 일이 자주 있습니다.

Git의 브랜치를 활용하면, 코드를 통째로 복사한 후, 원래 코드에 영향을 주지않고 독립적으로 개발할 수 있습니다.

 

주로 여러명이 동시에 작업할 때, 다른 사람에게 영향을 주거나 받지 않기 위해, 팀 프로젝트에서 많이 활용되고 있습니다.

개발자들은 각자 맡은 역할의 기능을 구현하면서 "작업단위"로 업무가 진행됩니다. 이때 서로에게 영향을 주지 않고 내용을 모두 기록하기 위해 만들어진 대책입니다.

 

 

Git Branch 작업 순서 📑

(1) 프로젝트 Github에서 갖고오기

> git clone "리퍼지토리 URL" 

 

(2) "dev" 브랜치 생성

> git checkout -b "dev"

 

(3) 생성된 브랜치로 전환

> git switch -c "dev"

 

(4) 브랜치 생성 확인(목록 조회)

> git branch

※ "q"를 눌러 종료

 

(5) 브랜치 내, 개발 브랜치 생성

브랜치를 생성해서 로그인 기능을 구현하고 테스트를 하려고 합니다. "dev" 내에 "feature/login" 브랜치를 생성합니다

> git checkout -b feature/login

 

(6)"feature/login"로 브랜치 전환

> git switch -c feature/login

 

(7) "dev"와 "feature/login" 병합(merge)

> git checkout dev

> git switch dev

 

> git merge feature/login

이때 작업은 추가적인 커밋 없이 fast-forward방식으로 진행됩니다.

 

※ fast-forward 란?

별도의 커밋을 생성하지 않고 현재 브랜치가 가리키는 브랜치와 바꾸는 작업

 

> Rebase vs Merge

더보기

merge : 

변경 내용의 이력이 모두 그대로 남아 있기 때문에, 이력이 복잡해진다.

 

rebase : 

특정 시점으로 브랜치가 가리키는 곳으로 변경하는 기능으로, 이력이 잘 정리돼있지만,

저장하고자 하는 변경 내용의 이력은 따로 저장해야 한다.

 

(8) 작업 내용 Push 하기

브랜치는 Local(로컬)에서 작업이 진행됩니다.. 작업이 완료되면 "push"를 통해 GitHub에 최신을 올립니다.

> git push origin dev

 

 

(9) Pull Request

GitHub에 다른 팀원들에게 최신 된 코드를 알립니다. 팀장 또는 관리자가 이를 확인한 후, 문제가 없다고 판단되면 요청을 받아 최종적으로 최신화를 진행합니다.

 

> 전체  workflow

 

 

Git Branch 명령어 📑

 

브랜치 생성

git branch [새로운 브랜치 이름]

 

브랜치 전환

git switch -c [새로운 브랜치 이름]
git checkout -b [새로운 브랜치 이름]

 

브랜치 목록 확인

git branch

 

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

git branch -v

 

브랜치 삭제

git branch -d [삭제할 브랜치 이름]

 

브랜치 강제 삭제

git branch -D

 

브랜치 병합

master 1 -> branch2로 병합할 때

git checkout master1
git merge branch2

 

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

git log --branches --graph --decorate

 

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

git stash

 

그 외, 상황 별 git 명령어 도움

https://dangitgit.com/ko

 

Dangit, Git!?!

git reflog # git의 모든 브랜치에서 있었던 # 지금까지의 모든 기록을 볼 수 있다 # 각각 HEAD@{index} 형태로 index를 가지고 있으니, # 잘못되기 전에 해당하는 index를 찾고 git reset HEAD@{index} # 타임머신을

dangitgit.com

 

 


 

반응형

댓글