git branch
branch : Branch를 생성하거나 확인하는 명령.
1. branch 확인
1-1. local branch확인
아래와 같이 인자 없이 수행할 경우, 현재 존재하는 branch들 (local repository의)을 보여줌.
- 기본적으로
main(과거엔master) 라는 branch가 존재함. *표시는 현재 작업이 이루어지고 있는 branch임을 표시함.
git branch
branch중에서 merge가 완료되었는지 여부는 다음을 통해 확인.
git branch --merged
git branch --no-merged
- git branch --merged : 현재 branch로 병합이 완료된 branches를 보여줌.
- git branch --no-merged : 현재 branch로 병합이 완료되지 않은 brances를 보여줌.
뒤에 기준이 되는 brance를 기입할 수도 있음: git branch --merged main
1-2. remote branch 확인
다음과 같이 -r 옵션과 같이 실행시 remote repository의 branch list를 출력함.
git branch -r
- remote repository와 연결되지 않은 경우엔 아무것도 출력되지 않음.
1-3. 모든 branch 확인
다음과 같이 -a 옵션과 같이 실행시 모든 branch list를 출력함.
git branch -a
verbose 옵션 -v (for local), -vv (for remote)을 주면 각 branch의 이름과 최종 commit의 hash id와 message를 표시
git branch -v
git branch -vv
2. 새로운 branch 생성
2-1. local branch 생성
gachon과 mmmil이라는 branch를 만들려면 아래와 같은 커맨드를 사용.
git branch gachon
git branch mmmil

- branch 이름인
gachon,mmmil은 실제로는 branch에 해당하는 특정 commit의 SHA1 hash value를 가리킴. - low-level 명령어인
rev-parse를 통해 해당 이름이 어떤 SHA1 hash value 를 가르키는지 확인 가능함.
← branch를 생성하는데 기준이 된 commit의 SHA1 hash code를 출력. :git rev-parse mmmil git branch -v: verbose. branch에 대한 detail을 출력.
switch -c [새_브랜치_이름] 을 통해서도 만들 수 있음 (이 경우, 새로 생성된 브랜치로 이동도 이루어짐)
git switch -c <new_branch_name>
switch는
branch간 전환에서 보다 권장됨.
2023.12.31 - [utils/git and github] - [git] switch : branch 전환
[git] switch : branch 전환
git switchgit switch 는 Git 2.23 버전에서 도입.branch 전환 과 working tree 를 최근 commit 상태 로 돌리는 등의 다양한 기능을 수행하던 git checkout 을git switch 와 git restore 로 분리하면서 등장함.git switch는branch
ds31x.tistory.com
2-2. 현재 local repository에 없는 remote repository의 branch를 가져오기 (브랜치 이름 그대로)
만약 remote branch를 기반으로 새로운 브랜치로 만들려면 2-3을 참고할 것.
이 절에선 local repository에 원격의 새로운 브랜치를 받아서 작업하고 수정사항을 해당 브랜치로 계속 추적하는 경우를 다룸.
# 원격 브랜치 목록 확인 (선택)
git fetch
git branch -r
# origin/feature 브랜치를 추적하는 로컬 브랜치 생성 및 전환
git switch -c feature --track origin/feature
- --track 을 해줘야 traking 상태가 되니 주의할 것.
- 같은 이름으로 꼭 해줘야 함 (협업시 가장 권장되는 방식)
- 주로, 새로 만든 브랜치에 합류하고 싶을 때 사용
2-3. 기존 remote branch 기반으로 local repository에서 새로운 브랜치로 추가 생성하고 이후 원격에도 해당 새로 만든 로컬 브랜치를 추가.
다음과 같이 remote repository의 특정 branch를 시작 포인트로 지정하여 새로운 브랜치를 생성할 수도 있음.
git fetch origin
git switch -c feature-x origin/develop
# 수정 등등
git push -u origin feature-x
- feature-x 라는 다른 이름의 새로운 local branch가 생성됨.
- 해당 브랜치는 remote repository의 develop 브래치의 최신 커밋을 기준으로 생성됨.
- 현재 작업 중인 브랜치가 feature-x로 전환됨.
- 이 feature-x 는 새로운 브랜치로 파일들을 변경 후 `git push -u orgin feature-x` 로 원격저장소에 새로운 브랜치로 push 된다.
- 때문에 feature-x 는 기존의 브랜치와 다른 이름이 되어야 한다.
새로운 브랜치 생성이 아닌 기존의 원격저장소의 브랜치와 연결하려면, switch -c 가 아닌 branch -u 를 사용해야 함.
3. 기존 local branch와 원격지의 branch와 연결: branch -u
기존의 로컬브랜치를 특정 원격브랜치와 연결하여 추적관계(upstream)로 만듦.
- 2-2 의 경우는 로컬브랜치를 연결하여 새로 만드는 경우이고,
- branch -u 는 2-1 로 만든 로컬 브랜치 를 특정 원격브랜치와 연결하는 것임.
이 경우 명령어의 형태는 다음과 같음.
git branch -u [remote_repository/branch]
git branch -u origin/develop
- 현재 branch(local repository)의 upstream으로 "입력한
remote_repository/branch"로 지정. -u는--set-upstream-to의 축약형.- 만일 remote repository의 별칭이
origin이고 연결하고자 하는 remote repository의 branch가function이라면,git branch -u origin/function으로 수행. - 연결가능한 remote branch는
git branch -r로 확인 가능하며,
만일 없다면git fetch로 정보를 업데이트하고 다시 확인할 것. git fetch수행 시 local repository는 변경하지 않고, remote_respository의 branch의 포인터만 생성해놓음.
4. branch 이름 변경.
git branch -m [old_name] [new_name]
old_name을 이름으로 가지는 branch를new_name으로 이름을 변경함.old_name과new_name둘을 입력하지 않고, 하나의 이름만 입력할 경우 현재 branch가 해당 이름으로 변경됨.
5. branch 삭제.
git branch -d [target_name]
target_name을 이름으로 가지는 branch를 삭제.
삭제가 아닌 숨긴다고 표현하는 게 보다 맞음.
git reflog를 통해 가리키는 포인터에 해당하는 branch 명을 지정하면 복구 가능함.
이를 사용하기 위한 제한 사항은 다음과 같음.
-d는 삭제하려는 branch의 모든 commit이 현재 브랜치에 병합이 되어 있어야 삭제 가능함.- 또한 local에 최신 commit (push되지 않은) 이 있는 경우 해당 branch 삭제 안됨.
(여기서 최신이란 연결된 remote repository의 branch보다 local의 branch가 최신을 의미)
← 이경우push를 해주어 remote repository의 연결된 branch에 업데이트가 되어야 이후 삭제가 가능해짐. - 즉, 최신 변경 사항이 있어서 아직 Merge가 필요한 경우에는 실행이 되지 않음.
← 이 경우,-D옵션을 사용하면 강제로 삭제되긴 함(비권장이나, 버릴 코드라면.... -D로...). -d는 현재 branch를 대상으로 실행되지 못 함.
다른 branch로switch한 다음 수행해야 함.
6. 원격지 브랜치 삭제
push를 이용하여 삭제한다.
git push [remote_repository] -delete [삭제할_브랜치]
git push origin --delete feature-x
- 원격저장소의 지정한 branch가 삭제되며 다른 사용자들도 접근하지 못하게 된다.
- git fetch --all 을 수행하고 git branch -r 로 확인하면 해당 브랜치가 없어진 것을 확인할 수 있음.
- 해당 branch의 commits도 당연히 삭제되므로 주의해서 사용해야 한다.
관련하여 읽어보면 좋은 자료들
2024.05.26 - [utils/git and github] - [Git] git 에서 branch란?
[Git] git 에서 branch란?
Git Branch의 개념Git에서 branch는 프로젝트를 독립적으로 관리할 수 있도록 해주는 중요한 기능임.branch를 통해 안정된 코드와 개발 중인 코드를 구분하여 관리할 수 있게 해줌. Branch를 통해동일한
ds31x.tistory.com
2024.05.20 - [utils/git and github] - [Git] Git Summary (작성중)
[Git] Git Summary (작성중)
git이란2024.05.20 - [utils/git and github] - Git : 소개 git 설치 후 해줘야 하는 작업들[Git] git 설치 후 우선 해줘야 하는 작업들 (tistory.com)local repository 초기화2024.05.20 - [utils/git and github] - [Git] init : local repo
ds31x.tistory.com
'utils > git and github' 카테고리의 다른 글
| [git] switch : branch 전환 (0) | 2023.12.31 |
|---|---|
| [git] stash : 현재 작업을 임시 저장 (1) | 2023.12.31 |
| git revert : 특정 commit 취소하기. (1) | 2023.12.30 |
| [git] .gitignore : 특정 resources를 git으로부터 격리. (1) | 2023.12.30 |
| [github] ssh 키 등록하기. (1) | 2023.12.27 |