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의 브랜치는 커밋에 첨부 된 북마크 일뿐입니다. 그래서 내 위의 그래프에서,있다 Xorigin/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 --prunegit 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-shootgit 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.