Git branch : 프로젝트를 기능별로 개발하기

“Git branch”는 Git에서 프로젝트를 효율적으로 관리하기 위한 핵심 개념입니다. 이 작업 공간은 개발 저장소를 어지럽히지 않고 병렬적으로 개발을 수행할 수 있도록 도와줍니다.

브랜치가 정확히 무엇이며, 어떻게 생성하고 전환하는지 정리해보았습니다.

Git branch 란?

Git branch는 Git의 가장 기본적인 작업 공간 단위입니다.

프로젝트를 여러 개발자가 동시에 작업할 수 있도록 해주는 것이 목적입니다.

각 브랜치는 독립적으로 변경 사항을 추적하며, 다른 브랜치에 영향을 주지 않습니다.

아래 그림을 보면 각 기능 단위로 브랜치를 나누어 독립적으로 작업을 진행하는 것을 확인할 수 있습니다.

Git branch : 브랜치 생성하기

git branch 명령어를 사용하여 브랜치를 생성합니다.
예를 들어, “feature/login” 브랜치를 생성하려면 다음과 같이 입력합니다.

(git branch 생성시 유의점은 inital commit을 시작 한 상태에서 branch 생성을 들어가야 한다는 점 입니다. 아무런 commit이 없다면 branch는 제대로 생성되지 않습니다.)

git branch feature/login

실제로 브랜치가 생성됐는지 확인하기 위해선 git branch 라는 명령어만 입력해보세요.

git branch


하지만 생성만으로는 해당 브랜치로 자동 이동 되지는 않습니다.

Git switch / Git checkout : 브랜치 전환하기

브랜치를 전환하기 위해 git switch 또는 git checkout 명령어를 사용합니다.

예를 들어 feature/login 브랜치로 이동하고 싶다면 아래와 같은 명령어를 사용합니다.

git switch <브랜치>
ex) git switch feature/login

혹은

git checkout <브랜치>
ex) git checkout feature/login

왜 git switch와 git checkout이 비슷한가?

  • git switch는 브랜치 조작만을 위한 명령어입니다.
  • git checkout은 브랜치 조작 뿐만 아니라 다른 기능들도 포함합니다.
  • 브랜치 조작을 위해서는 git switch를 사용하는 것이 권장됩니다.

브랜치 생성과 전환 동시에

git checkout -b 명령어를 사용하면 브랜치를 생성하고 동시에 전환할 수 있습니다.

예를 들어, “feature/call” 브랜치를 생성하고 전환하려면 다음 명령어를 사용합니다:

# -c 는 create의 약자입니다.
git switch -c feature/login 

# -b는 branch의 약자입니다.
git checkout -b feature/login

Git stash : 브랜치에서 코드 변경사항 임시 저장하기

코드 변경 후 git addgit commit 으로 저장하지 않으면, git switch 명령어가 동작하지 않을 때가 있습니다.

(정확히는 항상 그런 것은 아니고, 이동하는 브랜치의 코드내가 변경한 코드에서 겹치는 부분이 있을 때 이동이 안됩니다!)

이런 경우, 빠르게 add commit 후 넘어가도 되지만 작업 도중, 급하게 switch를 해야 할 때는 stash로 코드를 임시 저장 후 switch를 할 수도 있습니다.

git stash save : Stash 저장하기

git stash“는 작업 중인 코드 변경사항을 임시로 저장하는 데 사용됩니다. 이는 갑작스러운 브랜치 전환이나 급한 버그 픽스에 대처할 때 매우 편리합니다.

git stash save "임시 메시지"

git stash save "메시지"가 아닌 git stash 만 입력해서 메시지 없이 저장할 수도 있습니다.

git stash list : Stash 목록 관리하기

여러 작업을 하면서 “git stash”를 여러 번 사용할 수 있습니다.
이 때 목록을 확인하고 필요한 stash를 적절히 적용하거나 제거할 수 있습니다.

git stash list
이전에 git stash save “임시 저장”으로 저장한 경우,
git stash list로 확인

git stash apply : Stash 불러오기

git stash apply” 명령어는 가장 최근에 생성한 stash를 현재 작업 중인 브랜치에 적용합니다.

stash를 적용하면 변경사항이 적용되지만, stash는 삭제되지 않습니다. 따라서 여러 번 적용할 수 있습니다.

# 최근에 저장한 stash를 현재 브랜치에 적용
git stash apply

# 특정 stash를 적용
git stash apply stash@{0}

git stash drop : Stash 삭제하기

git stash drop” 명령어는 특정 stash를 삭제합니다. 즉, 해당 stash를 더 이상 사용하지 않을 때 삭제할 때 사용됩니다.

stash를 삭제하면 해당 stash에서 저장한 변경사항이 완전히 삭제됩니다.

# 최근에 저장한 stash를 삭제
git stash drop

# 특정 stash를 삭제
git stash drop stash@{1}

stash 삭제하지 않는 경우, 어떤 일이 발생하는지 아래의 경우가 발생하는 것을 확인 할 수 있습니다.

commit 이전 상황이 아래와 같다고 가정 합니다.

main branch에서의 업무를 급하게 해결하기 위해 현재 브랜지 변경 사항을 stash save 해줍니다.

메인에서 업무가 완료가 feature/login 브랜치에서도 추가 기능이 구현되어서 commit이 완료되었습니다.


이 경우 위에서 보다 싶이 임시 저장 된 stash가 지워지지 않고 그대로 있어서 commit history가 복잡해 질 수 있음

이때 git stash drop을 사용합니다.


git history가 깔끔해진 것을 확인 할 수 있습니다.

Leave a Comment

목차