개발 Dev/깃 Git

Q. fork한 github 저장소 브랜치들을 하나만 남기고 일괄 삭제하고 싶다면?

Tap to restart 2022. 4. 3. 08:00

A. shell script를 사용한다.

 

아래 파일을 내려 받는다.

fork한 저장소 디렉터리에 복사한다.

$ sh ./remove_branches_except_mine.sh

를 실행하면 브랜치가 모두 삭제된다.

위험하니 꼭 테스트 저장소를 만든 뒤에 해보기를 권한다.

remove_branches_except_mine.sh
0.00MB

#!/bin/bash

# 남겨둘 브랜치명 예)dev
MY_BRANCH="/dev"

SUB="remotes/origin/"

branches=`git branch -a`

for b in $branches
do
	if [[ "$b" == *"$SUB"* ]] && [[ "$b" != *"$MY_BRANCH" ]] && [[ "$b" != *"main"* ]]
	then  
		echo $b
		git push origin --delete ${b/${SUB}/""}
	fi
done

 

이때 계정과 비밀번호를 입력하라고 하는데, 비밀번호는 access token을 입력해야 한다.

참고: Creating a personal access token

 

아래처럼 선택해서 만들면 된다.

 

sh 명령어 실행

sh ./remove_branches_except_mine.sh 명령어를 실행하면 아래처럼 뜬다.

 

token 입력

만든 token을 복사해서 password 대신 입력하면 된다.

 

브랜치 삭제 시작

test, test2 브랜치가 삭제되었다.

그럼 브랜치가 모두 삭제되고 main, dev만 남아 있는 것을 볼 수 있다.