일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 동시insert
- 텔레그램 챗봇
- 리액트네이티브
- pure CSS
- vuejs
- insert into
- frontend
- axios
- util fuction
- rebase -i
- 시차애니메이션
- git command
- chatbot
- SQL
- EpPlus
- c#
- 시차 스크롤
- 파이썬 챗봇
- Python
- oracle
- 챗봇
- 브랜치 삭제
- local branch
- reactnative
- 다중insert
- 개발
- insert와 update 한꺼번에 하기
- TypeScript
- git
- 로컬 브랜치
- Today
- Total
DOG FOOT
[git] branch 명령어로 로컬 브랜치 한 번에 정리하기 본문
가끔 개발을 하다보면 로컬 브랜치가 손쓸 수 없을만큼 많아지는 경험, 해본 적 있으신가요?
로컬 브랜치 상태를 원격과 동일하게 늘 맞춰주지 않으면 로컬에 이미 병합되어버린 브랜치들이 남아있는데요.
저는 귀찮을 때마다 아래 명령어로 브랜치를 정리합니다.
TL;DR
로컬에 있는 모든 브랜치를 제거하고 싶다면 아래 커맨드를 입력해주세요.
*주의) force는 병합되지 않은 브랜치도 지워버리므로 조심히 사용하세요.
git branch | grep -v '^*' | xargs git branch -d --force
커맨드 자세히 알아보기
먼저 git branch 커맨드입니다.
git branch
// 예시 출력
// * main
// feature-1
// feature-2
현재 Git 저장소에 존재하는 모든 로컬 브랜치의 목록을 출력합니다.
체크아웃된 브랜치 앞에는 *로 표시됩니다.
하지만 현재 체크아웃된 브랜치를 지워버리면 문제가 되겠죠?
grep -v '^*'
// feature-1
// feature-2
그래서 grep 을 사용합니다.
grep은 주어진 패턴과 일치하는 텍스트를 필터링하는 명령입니다.
-v 옵션은 패턴과 일치하지 않는 행만 출력합니다.
'^*'는 정규식으로, 줄의 시작(^)에 *가 있는 경우를 의미합니다. 즉, 현재 체크아웃된 브랜치입니다.
즉, 체크아웃된 브랜치를 제외한 브랜치 이름만 출력하게 됩니다.
xargs
xargs는 이전 명령의 출력 결과를 인수로 전달해서 이후 커맨드를 실행합니다.
git branch -d
git branch 커맨드에 -d 옵션을 주게 되면 브랜치를 삭제합니다.
이 때, 병합되지 않은 브랜치는 삭제할 수 없기 때문에 로컬의 모든 브랜치를 정리하고 싶다면 --force 옵션을 추가합니다.
모든 명령어를 조합하면 로컬 브랜치를 정리할 수 있게 됩니다.
git branch | grep -v '^*' | xargs git branch -d
// 로컬에 main(체크아웃), feature-1, feature-2 브랜치가 있는 경우
// 아래 커맨드를 직접 입력하는 것과 같은 효과
// git branch -d --force feature-1
// git branch -d --force feature-2
실수로 중요한 브랜치를 삭제하지 않도록 삭제 전에 브랜치 상태를 확인하며 force 옵션을 적절히 사용하면 좋아요.
끝!
'개발새발 > Git' 카테고리의 다른 글
[git] 날려버린 스태시를 찾아서 (0) | 2022.12.06 |
---|---|
[Git] Git History 정리를 위한 rebase -i 명령어 알아보기 (0) | 2020.12.06 |