일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- JavaScript
- Android
- viewcontroller
- DevOps
- styling
- npm install
- REACT
- currying
- nextJS
- npm
- GitLab
- ReactNative
- Swift
- github
- HTML
- React Native
- js
- xtring.log
- Docker
- rn
- vscode
- Branch
- Xcode
- ios
- git
- styled-components
- react-native
- ES6
- commit
- shortcut
- Today
- Total
xtring.dev
[Git] Git branch 톺아보기 - 🎋 branch를 확인/생성/삭제 본문
Git branch 톺아보기 - 🎋 branch를 확인/생성/삭제
keyword : git branch, git checkout
branch란?
Git을 통해 코드 형상관리하는 팀은 동시에 하나의 저장소(repository)를 바라보고 작업하게 됩니다. 하나의 저장소에서는 신규 개발(feat), 버그 수정(bug) 등의 작업이 이루어집니다. 만약 branch를 사용하지 않고 작업하게 되면 어떤 문제가 발생할까요?
하나의 프로젝트에서 누가 어떤 작업을 어떻게 작업했는지 확인하는지 관리할 수 없습니다.(이는 혼자서 작업을 하더라도 발생할 수 있는 문제입니다. 어떤 시점에서 어떤 작업이 이루어졌는지)
이 문제를 해결하기 위해서 branch 기능을 사용하여 하나의 프로젝트에서 각각의 이슈(issue; feat, bug, style, build, chore, ...)를 나누어 작업합니다. 이를 통해 버전을 관리하여 각각의 시점, 특징, 작업자에 따라 분리 할 수 있으며 이는 개발팀의 협업에서 매우 중요한 사안입니다.(여기서 부터 코드 형상 관리의 시작이라고 볼 수 있습니다.)
그럼 지금부터 branch를 생성하고 사용하는 법을 알아봅시다!
branch 사용하기
1. Branch 확인하기
먼저 현재 자신이 위치한 branch를 확인합니다.
$ git branch
# 또는
$ git branch -list
* master
dev
release
현재 local에서 바라볼 수 있는 branch list를 보여줍니다. 그리고 지금(현재 시점에서) 자신이 위치한 Branch는 *이 붙어 있습니다.(현재 위치 master)
위에서 local branch를 확인했다면 origin branch는 어떻게 확인할까요?
** -r** 옵션을 사용합니다!
$ git branch -r
origin/master
origin/dev
origin/release
또는 -a 옵션을 사용하면 local branch와 origin(remote) branch를 동시에 보여줍니다.
$ git branch -a
* master
dev
release
remotes/origin/mater
remotes/origin/dev
remotes/origin/release
그리고 -v 옵션을 사용하면 브랜치의 마지막 커밋 메세지를 확인할 수 있습니다.
$ git branch -v
* dev adb3i8f feat: 새로운 기능 추가
2. branch 생성하기
branch를 생성하는 방법은 git branch <branch_name>
입니다.
$ git branch new_feature
* master
new_feature
그리고 branch가 생성되면 바로 이 branch(생성된)로 이동(checkout)하지 않습니다.
생성된 branch로 이동하는 방법은 git checkout <branch_name>
입니다.
$ git checkout new_feature
master
* new_feature
생성과 동시에 branch로 이동하는 방법은 git checkout -b <branch_name>
입니다.
$ git checkout -b new_bugfix
master
new_feature
* new_bugfix
3. branch 이름 수정하기
현재 branch의 이름을 수정할 때는
# 현재 branch > new_feature
$ git branch -m new2_feature
를 사용합니다. 그러면 new2_feature
로 현재 branch의 이름이 변경됩니다.
4. branch 삭제하기
생성한 branch 중 이제는 필요없는 branch를 제거하는 방법은 git branch -d <branch_name>
입니다.
# 현재 branch master
$ git branch -d new_bugfix
$ git branch
* master
new_feature
여기서 주의할 점은 현재 위치한 branch는 현재 시점에서 삭제할 수 없습니다. 즉, 다른 branch로 이동해야만 삭제가 가능합니다.
또한, 작업 중 이였던 branch에서 commit를 하지 않고 이동하게 되면
error: 다음 파일의 로컬 변경 사항을 체크아웃 때문에 덮어 쓰게 됩니다:
dev/proj1/main/index/js
브랜치를 전환하기 전에 변경 사항을 커밋하거나 스태시하십시오.
중지함
와 같은 error 메시지를 볼 수 있습니다. branch를 이동하려면 그전에 작업 내용을 commit 해야겠죠?
또 어떤 branch의 변경사항을 제거하는 방법은
$ git branch -D new_bugfix
를 사용합니다. 이 명령어는 병합되지 않은 변경 사항을 강제로 삭제합니다. 특정 개발 라인과 관련된 모든 commit을 영구적으로 버리고 싶을 때 명령입니다.
5. 생성한 branch를 origin Repository에 push하기
생성한 branch를 origin Repository에 올리기 위해서는 git push
하게 되면
$ git checkout new_feature
$ git push
fatal: The current branch new_feature has no upstream branch.
To push the current branch and set the remote as upstream, use
git push --set-upstream origin new_feature
와 같은 fatal error를 만나게 됩니다.
친절하게도 git은 우리의 의도를 파악하고 방법을 알려줍니다.
git push --set-upstream origin <branch_name>
또는 git push -u origin <branch_name>
를 사용합니다.
$ git push --set-upstream origin new_feature
# 또는
$ git push -u origin new_feature
이전에 알아 보았던 git status
(origin branch 확인하기)나 Github Repository를 확인해보면 branch가 추가된 것을 확인 할 수 있습니다.
6. 원격 저장소의 특정 branch만 clone하기
보통 Github에서 프로젝트를 clone하는 경우 master
branch를 통째로 받아오게 됩니다. 그러나 특정 branch를 가리켜 clone하고 싶은 경우 사용하는 방법이 있습니다. -b 옵션을 사용합니다.
git clone -b <branch_name> <repo_url>
$ git clone -b new_feature https://github.com/xtring/project.git
마무리 👏🏻
git의 핵심기능 중 하나인 branch에 대해서 알아보았습니다. 글의 초입에서 설명했듯이 branch를 사용하게 되면 프로젝트를 여러 개발팀원이 작업하더라도 코드의 변경 추적을 가능하게 하고 각 issue에 대한 분리가 가능하기 때문에 개발팀에서는 필수적인 협업 방법입니다. 꼭 능숙하게 배워서 적용할 수 있으면 좋겠습니다.
📗 Ref.
'for Dev. > Git | Github' 카테고리의 다른 글
[Git] git switch, restore가 뭐야?📍 - checkout에서 switch, restore (0) | 2021.12.09 |
---|---|
[Git] 이미 commit한 메세지 수정하기📍 - 바로 이전/그 전/리모트 commit (6) | 2021.07.11 |
[Git] 규칙적인 Commit 메세지로 개발팀 협업하기👾 (0) | 2021.06.28 |
[Git/Github] 중구난방 여러 개의 repo를 하나의 repo로 모아보자! (0) | 2021.01.15 |
[Git] add와 commit을 동시에! (0) | 2021.01.10 |