Git 브랜치를 로컬 및 원격으로 어떻게 삭제합니까?


16949

로컬 및 원격으로 분기를 삭제하고 싶습니다.

원격 지점을 삭제하지 못했습니다.

$ git branch -d remotes/origin/bugfix
error: branch 'remotes/origin/bugfix' not found.

$ git branch -d origin/bugfix
error: branch 'origin/bugfix' not found.

$ git branch -rd origin/bugfix
Deleted remote branch origin/bugfix (was 2a14ef7).

$ git push
Everything up-to-date

$ git pull
From github.com:gituser/gitproject

* [new branch] bugfix -> origin/bugfix
Already up-to-date.

remotes/origin/bugfix로컬 및 원격으로 분기 를 성공적으로 삭제하려면 어떻게해야 합니까?


1057
중재자 참고 사항 :이 질문에 대답하려면 이미 40 개의 답변이 게시되어 있습니다. 새로운 답변이 실질적인 가치를 더할 수 있습니까?
— Robert Harvey

54
참고 : Git 2.5+ (Q2 2015)의 경우 정확한 메시지는 " deleted remote-tracking branch"입니다 : github.com/git/git/commit/…
— VonC

로컬 스크립트와 원격 브랜치를 삭제하는 것의 차이점을 단순화하는이 스크립트에 관심이있을 것입니다 : tlbx.app/blog/delete-any-git-branch-the-easy-way
— Mig

@RobertHarvey 39 만
— 아담

@Adam : 81. 여러 가지 이유로 42 개의 답변이 삭제되었습니다. 특정 주제에 대한 대중의 설명되지 않은 집착은 인생에서 가장 큰 신비 중 하나입니다.
— Robert Harvey

답변:


21425

행정상 개요

$ git push -d <remote_name> <branch_name>
$ git branch -d <branch_name>

대부분의 경우 원격 이름은 origin입니다. 이 경우 명령을 사용해야합니다.

$ git push -d origin <branch_name>

지사 삭제

로컬 브랜치 를 삭제하려면 다음 중 하나를 사용하십시오.

$ git branch -d branch_name
$ git branch -D branch_name

참고 : 이 -d옵션은에 대한 별칭으로 --delete, 분기가 업스트림 분기에 완전히 병합 된 경우에만 분기를 삭제합니다. 에 -D대한 별칭 인을 사용할 수도 있습니다 . 이는 --delete --force"병합 상태에 관계없이"분기를 삭제합니다. [출처 : man git-branch]

원격 지점 삭제 [2017 년 9 월 8 일에 업데이트 됨]

현재 힘내 v1.7.0 , 당신은 삭제할 수 있습니다 원격 사용하여 분기를

$ git push <remote_name> --delete <branch_name>

어느 것보다 기억하기 쉬울 수 있습니다

$ git push <remote_name> :<branch_name>

Git v1.5.0에서 "원격 브랜치 또는 태그를 삭제하기 위해" 추가되었습니다 .

Git v2.8.0 부터는 별명으로 옵션과 git push함께 사용할 수도 있습니다 .-d--delete

따라서 설치 한 Git 버전은 더 쉬운 구문을 사용해야하는지 아니면 더 어려운 구문을 사용해야하는지에 따라 결정됩니다.

원격 지점 삭제 [2010 년 1 월 5 일의 원본 답변]

Scott Chacon 의 Pro Git 3 장 :

원격 지점 삭제

원격 지사가 완료되었다고 가정합니다. 사용자와 공동 작업자는 기능을 마치고이를 원격의 마스터 지사 (또는 안정적인 코드 라인이있는 지사)로 병합했습니다. 다소 둔감 한 구문을 사용하여 원격 브랜치를 삭제할 수 있습니다 git push [remotename] :[branch]. 서버에서 서버 수정 분기를 삭제하려면 다음을 실행하십시오.

$ git push origin :serverfix
To git@github.com:schacon/simplegit.git
 - [deleted]         serverfix

팔. 서버에 더 이상 지점이 없습니다. 해당 명령이 필요하고 구문을 잊어 버릴 수 있기 때문에이 페이지를보고 싶어 할 수 있습니다. 이 명령을 기억하는 방법 git push [remotename] [localbranch]:[remotebranch]은 우리가 조금 앞서 살펴본 구문을 상기시키는 것입니다. [localbranch]당신이 그 부분 을 떠나면 , 당신은 기본적으로“내 편에 아무것도 가지고 가지 않도록하세요 [remotebranch].”라고 말합니다.

나는 발행 git push origin: bugfix했고 아름답게 일했다. Scott Chacon이 옳았습니다. 저는 해당 페이지에 귀 를 기울이고 싶습니다 (또는 Stack Overflow에서 이에 대한 대답을 통해 사실상 개 귀에).

그런 다음 다른 컴퓨터에서 실행해야합니다.

# Fetch changes from all remotes and locally delete 
# remote deleted branches/tags etc
# --prune will do the job :-;
git fetch --all --prune

변경 사항을 전파합니다.


353
git fetch --all --prune서버에서 원격 분기를 삭제 한 후 다른 시스템 에서 작업을 수행해야 합니다. ||| 로컬 분기를 사용하여 로컬 분기를 git branch -d삭제하고 git push origin --delete다른 시스템 과 함께 원격 분기를 삭제 한 후에도 여전히 "사용되지 않는 추적 분기"가있을 수 있습니다 git branch -a. 이것들을 제거하려면 git fetch --all --prune.
— Trevor Boyd Smith

14
@TrevorBoydSmith의 git branch -a모든 분기를 볼 수 git branch -r있을뿐 아니라 원격 분기 만 볼 수도 있습니다 . 참조 git remote show origin– 출처 : gitready.com/intermediate/2009/02/13/list-remote-branches.html
— Sandra

17
git branch -D Branch_Name지역 지점을 없애기 위해 달려야 했다
— Kolob Canyon

11
@KolobCanyon 분기가 다른 분기에 병합되지 않은 경우 -D 만 사용해야합니다.
— BTRUE

3
문제는 "로컬과 GitHub에서 remotes / origin / bugfix 브랜치를 성공적으로 삭제하려면 어떻게해야합니까?" 업데이트 된 답변에서 명령을 실행 한 후에도 로컬 분기가 여전히 존재합니다. 수락 된 답변이 완전한 답변 이라면 좋을 것입니다. Git이 간단한 작업을 수행하는 것이 얼마나 어려운지에 대해서는 정말 놀랍습니다.
— jww

3316

Matthew의 대답 은 원격 브랜치 를 제거하는 데 유용하며 설명도 감사하지만 두 명령을 간단하게 구분합니다.

머신에서 로컬 브랜치 를 제거하려면 :

git branch -d {the_local_branch}( -D병합 상태를 확인하지 않고 분기를 강제로 삭제 하려면 대신 사용 )

서버에서 원격 분기 를 제거하려면 다음을 수행하십시오 .

git push origin --delete {the_remote_branch}

참조 : 힘내 : 지점 삭제 (로컬 또는 원격)


250
@megido well -Dforce deletes, -d아직 병합되지 않은 경우 경고를 표시합니다.
— TankorSmash

8
해당 지역의 지점은 마스터와 달렸다와 병합 할 경우 'git branch -d your_branch다음과 같은 오류가 발생하지error: The branch 'your_branch' is not fully merged. If you are sure you want to delete it, run 'git branch -D your_branch'.
— 괴짜

12
더 안전하기 때문에 -D 대신 -d를 사용하는 것이 좋습니다. 병합되지 않은 커밋으로 인해 -d가 실패하면이를 평가해야하며 제거해도 괜찮다면 -D를 사용하십시오.
— rooby

7
원격 브랜치가 제거 된 리포지토리 클론이있는 다른 사용자는 원격 에 더 이상 존재하지 않는 오래된 브랜치를 로컬에서 제거하기 위해 실행해야합니다 git remote prune <name>(예 git remote prune origin:).
— code_dredd

3
-d가 현재 HEAD와 병합되지 않은 경우 경고를 제공한다고 덧붙이고 싶습니다. 명확성이 필요한 경우이 명령을 사용하는 것이 좋습니다 git branch -a --merged origin/master. 로컬 및 원격 분기를 모두 나열합니다. 마스터로 병합되었습니다. 여기에 추가 정보
— Eric

2041

짧은 답변

다음 명령에 대한 자세한 설명을 보려면 다음 섹션에서 긴 답변을 참조하십시오.

원격 브랜치 삭제

git push origin --delete <branch>  # Git version 1.7.0 or newer
git push origin -d <branch>        # Shorter version (Git 1.7.0 or newer)
git push origin :<branch>          # Git versions older than 1.7.0

지역 지점 삭제

git branch --delete <branch>
git branch -d <branch> # Shorter version
git branch -D <branch> # Force-delete un-merged branches

로컬 원격 추적 지점 삭제

git branch --delete --remotes <remote>/<branch>
git branch -dr <remote>/<branch> # Shorter

git fetch <remote> --prune # Delete multiple obsolete remote-tracking branches
git fetch <remote> -p      # Shorter

긴 대답 : 삭제하는 세 가지 다른 가지가 있습니다!

로컬 및 원격으로 분기를 삭제하는 경우 다음과 같은 세 가지 분기가 있습니다 .

  1. 로컬 지점 X.
  2. 원격 원점 X.
  3. 지역 원격 추적 브랜치 origin/X는 원격 브랜치를 추적합니다 X.

세 가지의 시각화

사용 된 원래 포스터 :

git branch -rd origin/bugfix

로컬 원격 추적 분기 만 삭제했지만 origin/bugfix의 실제 원격 분기 bugfix는 삭제 되지 않았습니다 origin.

도표 2

그 실제 원격 지점을 삭제하려면 다음이 필요합니다

git push origin --delete bugfix

도표 3

추가 세부 사항

다음 섹션에서는 원격 및 원격 추적 분기를 삭제할 때 고려해야 할 추가 정보에 대해 설명합니다.

원격 브랜치를 삭제하면 원격 추적 브랜치도 제거됩니다.

Xa git push 를 사용하여 명령 줄에서 원격 분기 를 삭제하면 로컬 원격 추적 분기도 제거origin/X 되므로 git fetch --prune또는로로 사용되지 않는 원격 추적 분기를 제거 할 필요가 없습니다 git fetch -p. 그러나 어쨌든 해치지 않을 것입니다.

origin/X다음을 실행하여 원격 추적 분기 도 삭제 되었는지 확인할 수 있습니다 .

# View just remote-tracking branches
git branch --remotes
git branch -r

# View both strictly local as well as remote-tracking branches
git branch --all
git branch -a

더 이상 사용되지 않는 로컬 원격 추적 분기 원점 / X 정리

X명령 줄에서 원격 분기 를 삭제하지 않은 경우 (위와 같이) 로컬 리포지토리에는 여전히 원격 추적 분기가 포함됩니다 (이제 더 이상 사용되지 않음) origin/X. 예를 들어 GitHub의 웹 인터페이스를 통해 원격 브랜치를 직접 삭제 한 경우에 발생할 수 있습니다.

이 구식 원격 추적 분기를 제거하는 일반적인 방법 (Git 버전 1.6.6부터)은 간단히 또는 더 짧게 실행 git fetch하는 것 입니다. 이렇게하면 더 이상 원격에 존재하지 않는 원격 분기에 대해 사용되지 않는 모든 로컬 원격 추적 분기가 제거됩니다 .--prune-p

git fetch origin --prune
git fetch origin -p # Shorter

1.6.6 릴리스 노트 (강조 광산) 의 관련 인용문은 다음과 같습니다 .

많은 저장소에서 가져 오기를 실행하기위한 "git fetch"학습--all 및 --multiple옵션, --prune오래된 원격 추적 분기 제거 옵션. 이것들은 "git remote update"와 "git remote prune"을 덜 필요로한다 (그러나 "remote update"나 "remote prune"을 제거 할 계획은 없다).

더 이상 사용되지 않는 원격 추적 분기를위한 위의 자동 가지 치기 대신

또한, 대신 통해 사용되지 않는 지역의 원격 추적 가지를 가지 치기의 git fetch -p, 당신은 여분의 네트워크 작업을 피할 수있는 단지 수동으로 분기 (들) 제거 --remote또는 -r플래그 :

git branch --delete --remotes origin/X
git branch -dr origin/X # Shorter

또한보십시오


귀하의 일러스트레이션에서 로컬 복제 저장소와 원격 원본 저장소가 있음을 알 수 있습니다. 따라서 적어도 두 개의 물리적 분기가 있습니다. 삭제할 세 번째 지점은 어디에 있습니까? 세 번째 분기는 로컬 클론 저장소의 커밋을 가리키는 포인터입니까?
— huggie

6
@huggie 그것은 꽤 정확합니다. Git의 브랜치는 커밋에 첨부 된 북마크 일뿐입니다. 그래서 내 위의 그래프에서,있다 X및 origin/X로컬 복제 북마크 (2 가지), 다음이 X(3 가지를 만드는) 리모컨.

6
원격 추적 분기의 경우 +1 이 지점은 다른 지점을 복제 할 때 문제를 일으키는 원인입니다. 커밋을 추적하고 그 사람의 지사로 푸시할지 묻습니다.
— Kermit_ice_tea 2016 년

1
그래픽은 혼자 금 잘 했어.
— Mogens TrasherDK

1
미래 독자들을 위해 @Kermit_ice_tea가 위에서 이야기하고 있는 것은 원격 추적 브랜치 가 아니라 로컬 브랜치 (이 답변에 설명 된대로) 입니다. 때 현지 지점 이 원격 지사에 기본에서 풀 푸시에 의해 그 것이다 그것을 위해 구성된 "상류 지점"을 가지고 있습니다. "업스트림 지점"이 설정되어 있는 로컬 지점 을 "추적 지점"이라고 하며, 유사한 용어로 인해 원격 추적 지점 과 혼동하기 쉽습니다 .
— David P

1520

브랜치를 삭제하는 단계 :

원격 브랜치 를 삭제하려면 다음을 수행하십시오 .

git push origin --delete <your_branch>

삭제를 들어 지역 지점을 , 당신은 세 가지 방법 :

1: git branch -D <branch_name>

2: git branch --delete --force <branch_name>  # Same as -D

3: git branch --delete  <branch_name>         # Error on unmerge

설명 : 좋아, 여기서 무슨 일이 일어나고 있는지 설명해주세요!

간단하게 수행 git push origin --delete하기 위해 원격 지점을 삭제 만 , 마지막에 분기의 이름을 추가하고이 삭제되고 밀어 원격 동시에 ...

또한 git branch -D로컬 분기 만 삭제하는 !! ...

-D는 --delete --force병합되지 않은 분기를 삭제하는 (강제 삭제) -d를 의미 하지만 --delete분기 병합 상태 각각에 오류가 발생 하는 스탠드를 사용할 수도 있습니다 ...

또한 아래 이미지를 만들어 단계를 보여줍니다.

자식에서 원격 및 로컬 분기 삭제


49
git branch -a로컬 및 원격 브랜치를 표시합니다. 다이어그램 소개에 도움이됩니다.
— LoranceChen

4
삭제하려는 지점에서 설정하는 경우 로컬 지점을 삭제하기 전에 삭제해야하는 지점 (예 : 마스터) 이외의 지점을 체크 아웃해야합니다.
— BaDr Amer

지점이 원산지에서 삭제되면 로컬 리포지토리가이를 인식하지 않습니다. 여전히 로컬로 캐시 된 해당 브랜치 버전이 있지만 실제로는 git branch -a가 원격 브랜치로 나열합니다. 해당 정보를 다음과 같이 로컬로 정리할 수 있습니다. git remote prune origin삭제 된 분기의 로컬 사본은 이것으로 제거되지 않습니다. git fetch --prune
— vibs2006

2
이미지가 산만하고 매우 커서 답변에 아무것도 추가하지 않습니다. 이것이 추세가되지 않기를 바랍니다.
— jmiserez

797

다음을 사용하여 원격 지점을 삭제할 수도 있습니다

git push --delete origin serverfix

어느 것과 같은

git push origin :serverfix

그러나 기억하기가 더 쉬울 수 있습니다.


1
... 사용하기에 더 안전합니다 : O
— cst1992

1
: 당신은 수행 할 수있는 지역 지점 삭제에 대한 부분을 잊었 git branch -d <local_branch>거나 git branch -D <local_branch>강제 삭제
— 아 미트 대쉬

370

팁 :를 사용하여 분기를 삭제할 때

git branch -d <branchname> # Deletes local branch

또는

git push origin :<branchname> # Deletes remote branch

참조 만 삭제됩니다. 지점이 실제로 원격에서 제거되었지만 지점에 대한 참조는 여전히 팀 구성원의 로컬 저장소에 있습니다. 이는 다른 팀 구성원의 경우 삭제 된 분기가 계속 수행 될 때 계속 표시됨을 의미합니다 git branch -a.

이를 해결하기 위해 팀 구성원은 삭제 된 분기를

git remote prune <repository>

이것은 일반적으로 git remote prune origin입니다.


14
위 git push작업을 수행하면 로컬 지점 과 원격 지점이 삭제됩니다 .
— Annika Backstrom

22
참고 git remote prune사용되지 않는 원격 추적 지점을 제거하는 다소 오래된 방법은, 그것을 할 수있는 새로운 방법을 사용하는 것입니다 git fetch --prune나 git fetch -p.

1
@RRMadhav, 실제로 원격 브랜치에 대한 참조가 로컬에서 제거되므로 삭제 한 브랜치를 삭제 한 후 표시되지 않습니다. 해당 지점에서 해당 지점을 체크 아웃 한 다른 사람은 여전히 ​​해당 참조를 가지며 지점을 제거하지 않는 한 계속 참조합니다.
— pfrenssen

361

지점을 삭제하려면 먼저 삭제할 지점 이외의 지점으로 체크 아웃하십시오.

git checkout other_than_branch_to_be_deleted

로컬 브랜치 삭제 :

git branch -D branch_to_be_deleted

원격 브랜치 삭제 :

git push origin --delete branch_to_be_deleted

260
git branch -D <name-of-branch>
git branch -D -r origin/<name-of-branch>
git push origin :<name-of-branch>

7
주의 -D 세력을 삭제합니다. 항상 사용하는 것이 좋습니다 -d. 위험한 작업을해야하는지 상기시켜줍니다.
— Jonathon Reinhart

13
ahahah :) 그것은 당신에게 달려 있습니다 : git crying을보고 싶다면 -d를 사용하고 울고 싶다면 -D를 사용하십시오.
— Felipe

224

간단합니다. 다음 명령을 실행하십시오.

로컬 및 원격으로 Git 브랜치를 삭제하려면 먼저 다음 명령을 사용하여 로컬 브랜치를 삭제하십시오.

git branch -d example

(여기 example지점 이름이 있습니다.)

그런 다음이 명령을 사용하여 원격 분기를 삭제하십시오.

git push origin :example

199

다른 접근 방식은 다음과 같습니다.

git push --prune origin

경고 : 로컬에 존재하지 않는 모든 원격 브랜치가 삭제됩니다. 또는 더 포괄적으로

git push --mirror

원격 저장소를 저장소의 로컬 사본처럼 보이게합니다 (로컬 헤드, 리모콘 및 태그는 원격에서 미러링됩니다).


1
git push --prune origin은 gitlab에서 나를 위해 아무것도하지 않았습니다. git clone git : //repo.git; 자식 브랜치 -d -r 원점 / 일부 브랜치; 자식 푸시-원점 정리; 수율 : 모든 것 최신; 자식 가져 오기; 로컬로 삭제 된 분기를 다시 가져옵니다. git push-미러; 지금 그들은 정말로 갔다!
— eMBee

165

Bash 설정 에서 다음을 사용합니다 .

alias git-shoot="git push origin --delete"

그런 다음 전화를 걸 수 있습니다.

git-shoot branchname

11
난 그냥 내 .gitconfig 촬영에 = 푸시 원점 --delete 별명 "촬영"을 추가 결국
— hdost을

오리진이 Atlassian Stash이고 분기가 기본값으로 설정된 경우 "기본적으로 현재 분기 삭제가 거부되었습니다 ..."라는 오류가 발생합니다. 삭제하기 전에 Stash의 기본 분기를 다른 분기를 가리 키도록 변경해야했습니다.
— neoscribe

이것은 당신이 한 것처럼 완벽하게 간단하지만, git git은 사용자 정의 명령을 만들 수도 있습니다. 넣어 git push origin --delete $1라는 경로에 파일 git-shoot과 git shoot branchname도 작동합니다.
— mahemoff

132

로컬로 삭제 :

로컬 브랜치를 삭제하려면 다음을 사용하십시오.

git branch -d <branch_name>

분기를 강제로 삭제하려면 -D대신을 사용하십시오 -d.

git branch -D <branch_name>

원격으로 삭제 :

두 가지 옵션이 있습니다.

git push origin :branchname

git push origin --delete branchname

더 직관적이므로 두 번째 방법을 사용하는 것이 좋습니다.


129

2013 년 1 월부터 GitHub는 Delete branch"분기"페이지의 각 지점 옆에 버튼을 포함 시켰습니다 .

관련 블로그 게시물 : 브랜치 생성 및 삭제


3
나는 올해 만 Github을 사용하기 시작했는데, 이것이 왜 이렇게 높은 등급의 질문인지, 왜 Github 웹 인터페이스에서 그것을 삭제하라고 제안하는 최고의 답변이 없는지 궁금했습니다! 최근에 추가 된 것임을 흥미 롭습니다.
— Cam Jackson

6
나는 이것을 지적하려고했다. 단추가 로컬 지점을 삭제하지는 않습니다.이를 수행하는 방법은 다음 답변을 참조하십시오. stackoverflow.com/a/10999165/901641
— ArtOfWarfare

126

단일 명령으로이 두 단계를 완료하려면 아래에 다음을 추가하여 별명을 작성할 수 있습니다 ~/.gitconfig.

[alias]
    rmbranch = "!f(){ git branch -d ${1} && git push origin --delete ${1}; };f"

또는 다음을 사용하여 명령 줄에서 전역 구성에이를 추가 할 수 있습니다.

git config --global alias.rmbranch \
'!f(){ git branch -d ${1} && git push origin --delete ${1}; };f'

참고 : -d(소문자 d)를 사용하는 경우 분기가 병합 된 경우에만 분기가 삭제됩니다. 삭제를 강제 실행하려면 -D(대문자 D) 를 사용해야 합니다.


6
이것이 내가 찾던 것입니다. 내 자체 셸 함수 별칭이 작동하지 않아 (예기치 않은 EOF) 이유를 알 수 없었지만 이것이 훌륭하게 작동합니다! 은 I 교체 하였다 만들어진 변경 &&하여 ;(때때로 로컬 또는 원격 만 존재) 즉, 상기 첫 번째 명령은 여전히 실행할 번째 실패하더라도 있도록.
— user1021726

115

지점을 로컬 및 원격으로 삭제하려면

  • 마스터 지점으로 결제- git checkout master

  • 원격 지사 삭제- git push origin --delete <branch-name>

  • 현지 지점 삭제- git branch --delete <branch-name>


112

당신은 또한 이것을 사용하여 이것을 할 수 있습니다 git remote prune origin

$ git remote prune origin
Pruning origin
URL: git@example.com/yourrepo.git
 * [pruned] origin/some-branchs

git branch -r목록 에서 원격 추적 분기를 제거하고 삭제 합니다.


108

다른 답변 외에도 종종 git_remote_branch 도구를 사용합니다 . 추가 설치이지만 원격 지사와 편리하게 상호 작용할 수 있습니다. 이 경우 다음을 삭제하십시오.

grb delete branch

나는 또한 publishand track명령을 자주 사용한다는 것을 알았습니다 .


98

로컬 및 원격을 모두 삭제 하는 한 줄짜리 명령 :

D=branch-name; git branch -D $D; git push origin :$D

또는 ~ / .gitconfig에 아래의 별칭을 추가하십시오 . 용법:git kill branch-name

[alias]
    kill = "!f(){ git branch -D \"$1\";  git push origin --delete \"$1\"; };f"

17
⚠️ git branch -D스크립트가 병합되었는지 확인하지 않고 분기를 강제 삭제하므로 스크립트에주의 해서 사용하십시오 . -d안전을 위해 사용하십시오 .
— caesarsol

94

지점 삭제

분기 "접촉 양식"에 대한 작업이 완료되었고 이미 "마스터"에 통합되었다고 가정 해 봅시다. 더 이상 필요하지 않으므로 로컬로 삭제할 수 있습니다.

$ git branch -d contact-form

그리고 원격 브랜치를 삭제하기 위해 :

git push origin --delete contact-form

87

원격 지사 삭제

git push origin :<branchname>

현지 지점 삭제

git branch -D <branchname>

로컬 브랜치 단계 삭제 :

  1. 다른 지점으로 결제
  2. 지사 삭제

3
원격 브랜치 삭제에 "git push"가 필요합니까?
— Samitha Chathuranga

@SamithaChathuranga no, git push origin :<branchname>이미 '빈'지점을 원격으로 푸시합니다 (따라서 원격 지점 삭제)
— Michał Szajbe


83
git push origin --delete <branch Name>

보다 기억하기 쉽다

git push origin :branchName

81

이제 GitHub Desktop 응용 프로그램으로 할 수 있습니다 .

응용 프로그램을 시작한 후

  1. 지점이 포함 된 프로젝트를 클릭하십시오
  2. 삭제하려는 지점으로 전환

    스위칭 브랜치

  3. "Branch"메뉴에서 "Unpublish ..."를 선택하여 GitHub 서버에서 브랜치를 삭제하십시오.

    게시 취소 지점

  4. "지점"메뉴에서 "삭제" branch_name "... "을 선택 하여 로컬 시스템 (현재 작업중인 시스템)에서 지점을 삭제하십시오.

    현지 지점 삭제


15
나는 공감하지 않았지만 내 생각은 그것이 실질적으로 도움이되지 않는다는 것입니다. 문제는 분명히 외부 프로그램을 사용하지 않고도 더 많은 명령 줄 유형의 대답을 요구하는 것입니다. 사람들이 여기를 클릭하면 데스크탑 방식으로 github을 찾지 않을 것입니다.
— Daemedeor

12
@Daemedeor, 나는 동의하지 않습니다. OP가 질문을 한 2010 년에는 UI를 수행하는 방법이 없었으며 유일한 옵션은 명령 줄이었습니다. 명령 행 전용 옵션을 원한다는 것을 나타내려면 질문에 또는 명령 행 인터페이스 태그 ( 이 경우에는 존재하지 않음)로 지정해야합니다.
— Eric

3
원격 브랜치를 삭제하는 git 명령은 짜증나고 잊어 버리는 경향이 있습니다 (새롭고 오래된 것 모두). 다행히도 옵션이있는 GUI 도구가 있습니다. Git Gui, TortoiseGit 및 GitHub Desktop이 있습니다. Git Extensions에도이 기능이 있었으면 좋겠습니다. 어쨌든, 내가 기억하는 것은 원격 브랜치를 삭제해야 할 때 Git Extensions에서 Git Gui를 시작하는 것입니다.
— vezenkov

78

로컬로 삭제하려면 -(일반)

git branch -d my_branch

지점이 리베이스 / 병합 진행 중이고 제대로 수행되지 않은 경우 오류가 발생 Rebase/Merge in progress하여 분기를 삭제할 수 없습니다.

따라서 rebasing / merging을 해결해야합니다. 그렇지 않으면 다음 을 사용하여 강제 삭제 를 수행 할 수 있습니다 .

git branch -D my_branch

에서 삭제하려면 원격 :

git push --delete origin my_branch

다음을 사용하여 동일한 작업을 수행 할 수 있습니다.

git push origin :my_branch   # Easy to remember both will do the same.

그래픽 표현 :

여기에 이미지 설명을 입력하십시오


77

매우 간단합니다 :

원격 지점을 삭제하려면

git push -d origin <branch-name>

또는

git push origin :<branch-name>

로컬 지점을 삭제하려면

git branch -D <branch-name>

2
원격 지점을 삭제 하는 --delete대신 사용해야 했습니다 -d.
— ZakJ

-d옵션은 별칭 --delete이며 --delete작업이 작동하는 경우 -d에도 작동해야합니다. 분기를 강제로 삭제하려는 경우 또는 -D대신 사용할 수 있습니다 . -d--delete
— Vivek Maru

68

리모컨의 분기와 이름이 같은 태그가 있으면 작동하지 않습니다.

$ git push origin :branch-or-tag-name
error: dst refspec branch-or-tag-name matches more than one.
error: failed to push some refs to 'git@github.com:SomeName/some-repo.git'

이 경우 태그가 아닌 분기를 삭제하도록 지정해야합니다.

git push origin :refs/heads/branch-or-tag-name

마찬가지로 분기 대신 태그를 삭제하려면 다음을 사용하십시오.

git push origin :refs/tags/branch-or-tag-name

1
이것은 괜찮지 만 사람들은 처음에 동일한 이름과 동일한 이름 지정 체계로 지점과 태그의 이름을 지정해서는 안됩니다.

3
글쎄, 내 시나리오는 지점을 태그로 변환하고 태그가 지점과 동일한 이름을 갖는 것이 합리적이라는 것이 었습니다. 분기 B를 A로 병합하고 분기 B의 마지막 커밋에 태그 B를 태그로 변환하면 분기 B를 삭제 한 후에도 태그 B를 체크 아웃하여 쉽게 복원 할 수 있습니다.
— Greg

53

다른 많은 답변은 오류 / 경고로 이어질 것입니다. 예를 들어이 방법이 git branch -D branch_to_delete완전히 통합되지 않은 경우 에도 여전히 필요할 수 있지만이 방법은 비교적 바보 some_other_branch입니다.

git checkout some_other_branch
git push origin :branch_to_delete
git branch -d branch_to_delete

원격 브랜치를 삭제 한 경우 원격 프 루닝이 필요하지 않습니다. 추적중인 저장소에서 사용 가능한 최신 원격 장치를 가져 오는 데만 사용됩니다. git fetch리모컨을 제거하지 말고 추가하는 것을 관찰 했습니다. 다음 git remote prune origin은 실제로 무언가를 수행 할 때의 예입니다 .

사용자 A는 위의 단계를 수행합니다. 사용자 B는 다음 명령을 실행하여 최신 원격 분기를 확인합니다.

git fetch
git remote prune origin
git branch -r

51

나는이 답변에 대한 인터넷 검색에 질려서 crizCraig가 이전에 게시 한 답변에 비슷한 접근 방식을 취했습니다 .

내 Bash 프로필에 다음을 추가했습니다.

function gitdelete(){
    git push origin --delete $1
    git branch -D $1
}

그런 다음 분기를 완료 할 때마다 ( master예 :에 병합 ) 터미널에서 다음을 실행합니다.

gitdelete my-branch-name

... 다음 삭제 my-branch-name에서 origin같은 로컬뿐만 아니라.


7
이를 확장 --delete "$@"하고 -D "$@"대신 $1여러 가지 그것을 처리합니다.
— kunl

3
git branch -d변경 사항이 병합되었는지 확인하기 위해 먼저 (소문자 'd'로) 실행 한 다음 성공하면 푸시합니다 ( &&명령 사이에 입력)
— bryn

49

실행하기 전에

git branch --delete <branch>

먼저 다음을 실행하여 원격 지점 의 정확한 이름 을 판별하십시오 .

git ls-remote

이 입력 무엇을 말할 것이다 정확히 에 대한 <branch>값입니다. ( branch대소 문자를 구분합니다!)


46

사용하다:

git push origin :bugfix  # Deletes remote branch
git branch -d bugfix     # Must delete local branch manually

확실하게 삭제하려면 다음을 실행하십시오.

git branch -D bugfix

이제 삭제 된 원격 분기를 정리합니다.

git remote prune origin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.