github delete branch




로컬 및 원격으로 Git 브랜치를 삭제하려면 어떻게해야합니까? (20)

GitHub 에서 로컬 및 내 원격 프로젝트 포크에서 분기를 삭제하려고합니다.

원격 지점을 삭제하려는 시도가 실패했습니다.

$ 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.

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


요약

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

대부분의 경우 원격 이름은 origin 이름입니다.

로컬 지사 삭제

로컬 분기를 삭제하려면 다음 중 하나를 사용하십시오.

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

참고 : -d 옵션은 --delete 의 별칭입니다.이 분기는 이미 업스트림 브랜치에서 완전히 병합 된 경우에만 삭제됩니다. --delete --force 의 별칭 인 -D 를 사용하여 "병합 된 상태와 관계없이"분기를 삭제할 수 있습니다. [출처 : man git-branch ]

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

Git 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 년 5 월 5 일 원문]

Scott Chacon의 Pro Git 3 장 :

원격 지점 삭제

예를 들어, 당신과 당신의 공동 작업자가 기능을 끝내고 그것을 원격의 마스터 브랜치 (또는 당신의 안정적인 코드 라인이있는 어떤 브랜치)에 합병했다고 가정하십시오. git push [remotename] :[branch] 대신 오히려 둔한 구문을 사용하여 원격 분기를 삭제할 수 있습니다. 서버에서 serverfix 분기를 삭제하려면 다음을 실행하십시오.

$ git push origin :serverfix
To [email protected]:schacon/simplegit.git
 - [deleted]         serverfix

팔. 서버에 분기가 없습니다. 이 페이지가 필요하면 명령을 받아야 할 수도 있습니다. 구문을 잊어 버릴 가능성이 있습니다. 이 명령을 기억하는 방법은 이전에 git push [remotename] [localbranch]:[remotebranch] 구문을 호출하는 것입니다. [localbranch] 부분을 ​​떠나면 기본적으로 "내 옆에 아무것도 가져 가지 않고 [remotebranch] 만듭니다."라고 말합니다.

나는 git push origin :bugfix 발행했다 git push origin :bugfix 와 그것이 훌륭하게 작동했다. Scott Chacon이 옳았습니다. 저는이 페이지에 기울 이기를 원할 것입니다 (또는 에서 이것을 대답함으로써 거의 귀에 귀를 기울이십시오).

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

git fetch --all --prune

변경 사항을 전달합니다.


짧은 답변

다음 명령에 대한 자세한 설명을 보려면 다음 절의 긴 대답을 참조하십시오.

원격 분기 삭제 :

git push origin --delete <branch>  # Git version 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 tracking branches
git fetch <remote> -p      # Shorter

긴 답변 : 삭제할 3 가지 가지가 있습니다!

로컬 및 원격으로 브랜치를 모두 삭제할 때는 다음 세 가지 브랜치가 관련되어 있음을 기억하십시오 .

  1. 로컬 브랜치 X
  2. 원점 X 원점.
  3. 원격 지점 X 추적하는 로컬 원격 추적 분기 origin/X 입니다.

원래 사용 된 포스터

git branch -rd origin/bugfix

origin/bugfix 원격 지점 bugfix 가 아니라 자신의 로컬 원격 추적 분기 origin/bugfix 만 삭제했습니다.

실제 원격 지점을 삭제하려면

git push origin --delete bugfix

추가 세부 사항

다음 절에서는 원격 및 원격 추적 분기를 삭제할 때 고려해야 할 추가 세부 사항에 대해 설명합니다.

원격 브랜치를 삭제하기 위해 푸시하면 원격 추적 브랜치가 삭제됩니다.

git push 사용하여 명령 줄에서 원격 브랜치 X삭제하면 로컬 원격 추적 브랜치 origin/X 도 삭제 되므로 git fetch --prune 또는 git fetch -p 더 이상 사용되지 않는 원격 추적 분기를 제거 할 필요는 없습니다 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

쓸모없는 로컬 원격 추적 분기 origin / X 정리

명령 줄에서 원격 브랜치 X 를 삭제하지 않았다면 (위에서처럼), 로컬 레포에는 (여전히 쓸데없는) 원격 추적 브랜치 origin/X 됩니다. 예를 들어 GitHub의 웹 인터페이스를 통해 원격 지점을 직접 삭제 한 경우 이런 일이 발생할 수 있습니다.

이러한 쓸모없는 원격 추적 브랜치 (Git 버전 1.6.6 이후)를 삭제하는 일반적인 방법은 단순히 --prune 또는 -p 와 함께 git fetch 를 실행하는 --prune 입니다. 이렇게하면 원격에 더 이상 존재하지 않는 원격 브랜치에 대한 쓸모없는 로컬 원격 추적 브랜치가 모두 제거됩니다 .

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

다음은 1.6.6 릴리스 노트 (중점 광산)의 관련 인용문입니다.

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

쓸모없는 원격 추적 브랜치를 위의 자동 가지 치기의 대안

또는 git fetch -p 통해 오래된 로컬 원격 추적 브랜치를 제거하는 --remote 또는 -r 플래그를 사용하여 수동으로 브랜치를 제거하여 추가 네트워크 작업피할 수 있습니다 .

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

참고 사항


2013 년 1 월부터 GitHub에는 '지점'페이지의 각 지점 옆에 지점 삭제 버튼이 포함되어 있습니다.

관련 블로그 게시물 : 분기 생성 및 삭제


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

컴퓨터에서 로컬 브랜치 를 제거하려면 :

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

서버에서 원격 분기 를 제거하려면 다음과 같이하십시오.

git push origin --delete {the_remote_branch}

참조 : https://makandracards.com/makandra/621-git-delete-a-branch-local-or-remote


나는이 대답에 대해 인터넷 검색에 질려 버렸기 때문에 crizCraig가 이전에 게시 한 답변에 비슷한 접근법을 사용 했습니다 .

내 배쉬 프로필에 다음을 추가했습니다 :

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

그런 다음 분기가 끝날 때마다 (예 : master 병합) 터미널에서 다음을 실행합니다.

gitdelete my-branch-name

... 그러면 my-branch-nameorigin 뿐만 아니라 로컬에서 삭제됩니다.


다른 답변 외에도 종종 git_remote_branch 도구를 사용합니다. 추가 설치이지만 원격 지점과 상호 작용할 수있는 편리한 방법을 제공합니다. 이 경우 삭제할 항목 :

grb delete branch

나는 또한 publishtrack 명령을 자주 사용한다는 것을 알았다.


다른 모든 답변의 매시업. OS X 에서만 테스트 된 Ruby 1.9.3 이상이 필요합니다.

이 파일을 git-remove 라고 부르며 실행 가능하게 만들어 경로에 넣으십시오. 그런 다음, 예를 들어 git remove temp .

#!/usr/bin/env ruby
require 'io/console'

if __FILE__ == $0
      branch_name = ARGV[0] if (ARGV[0])
      print "Press Y to force delete local and remote branch #{branch_name}..."
    response = STDIN.getch
    if ['Y', 'y', 'yes'].include?(response)
      puts "\nContinuing."
      `git branch -D #{branch_name}`
      `git branch -D -r origin/#{branch_name}`
      `git push origin --delete #{branch_name}` 
    else
      puts "\nQuitting."
    end
end

다음을 사용하여 원격 분기를 삭제할 수도 있습니다.

git push --delete origin serverfix

같은 것은

git push origin :serverfix

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


또 다른 접근법은

git push --prune origin

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

git push --mirror

효과적으로 원격 저장소를 저장소의 로컬 복사본처럼 보이게 만듭니다 (로컬 헤드, 원격 및 태그는 원격지에서 미러링 됨).


리모컨의 브랜치와 이름이 같은 태그가있는 경우에는 작동하지 않습니다.

$ 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 '[email protected]:SomeName/some-repo.git'

이 경우 태그가 아니라 지점을 삭제하도록 지정해야합니다.

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

마찬가지로 지점 대신 태그를 삭제하려면 다음을 사용합니다.

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

실행하기 전에

git branch --delete <branch>

다음을 실행하여 원격 브랜치의 정확한 이름이 무엇인지 먼저 확인하십시오.

git ls-remote

이렇게하면 <branch> 값을 정확히 입력 할 필요가 없습니다. ( branch 는 대소 문자를 구분합니다!)


원격 지점 삭제

git push origin :<branchname>

로컬 분기 삭제

git branch -D <branchname>

로컬 분기 단계 삭제 :

  1. 다른 지점으로의 결제
  2. 로컬 브랜치 삭제

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

앱 실행 후

  1. 분기가 포함 된 프로젝트를 클릭하십시오.
  2. 삭제할 지점으로 전환하십시오.
  3. "Branch"메뉴에서 GitHub 서버에서 브랜치를 지우려면 "Unpublish ..."를 선택하십시오.
  4. "Branch"메뉴에서 "Delete" branch_name "..."을 선택하여 로컬 시스템 (현재 작업중인 시스템)에서 분기를 삭제하십시오.

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

  • 마스터 지점 git checkout master - git checkout master

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

  • 로컬 브랜치 삭제 - git branch --delete <branch-name>


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

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

그럼 당신은 전화 할 수 있습니다 :

git-shoot branchname

지점 삭제

지점 "contact-form"에 대한 우리의 작업이 완료되었다고 가정하고 이미이를 "마스터"에 통합 시켰습니다. 더 이상 필요하지 않으므로 삭제할 수 있습니다 (로컬).

$ git branch -d contact-form

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

git push origin --delete contact-form

로컬 삭제 - (보통),

git branch -d my_branch

리베이스 / 병합 진행 과정에서 분기가 제대로 수행되지 않았 으면 리베이스 / 병합 진행 중 오류가 발생하므로 해당 분기를 삭제할 수 없습니다.

따라서 rebase / 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.

그래픽 표현,


로컬 삭제 :

로컬 분기를 삭제하려면 다음을 사용할 수 있습니다.

git branch -d branch_name 

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

git branch -D branch_name

원격 삭제 :

두 가지 옵션이 있습니다.

git push origin :branchname  

git push origin --delete branchname 

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


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

git push origin --delete branchName

보다 기억하기 쉽다.

git push origin :branchName






git-remote