Git 브랜치를 로컬 및 원격으로 어떻게 삭제합니까? git branch -d origin/bugfix error:

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

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

$ 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로컬 및 원격으로 분기 를 성공적으로 삭제하려면 어떻게해야 합니까?



답변

행정상 개요

$ 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

변경 사항을 전파합니다.


답변

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

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

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

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

git push origin --delete {the_remote_branch}

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


답변

짧은 답변

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

원격 브랜치 삭제

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

또한보십시오


답변

브랜치를 삭제하는 단계 :

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

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분기 병합 상태 각각에 오류가 발생 하는 스탠드를 사용할 수도 있습니다 …

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

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


답변

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

git push --delete origin serverfix

어느 것과 같은

git push origin :serverfix

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


답변

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

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입니다.


답변

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

git checkout other_than_branch_to_be_deleted

로컬 브랜치 삭제 :

git branch -D branch_to_be_deleted

원격 브랜치 삭제 :

git push origin --delete branch_to_be_deleted