Visual Studio Code-VS Code에 여전히 표시되는 GitHub에서 삭제 된 분기를 제거 하시겠습니까?


93

VSCode에서 풀 요청을 수행하고 GitHub에서 분기를 삭제 한 후에도 해당 분기가 Visual Studio Code에 계속 표시됩니다. 분기를 선택하면 예상대로 오류가 발생합니다.

VSCode에서 이제 삭제 된 분기를 어떻게 제거합니까? 자동으로 수행 할 수 있습니까?


2
후속 조치 (3 년 후)에 대한 정답은 git fetch --prune원격 분기 참조를 업데이트 / git branch -d <branch-name>삭제하고 로컬 분기를 삭제 ( -D강제) 하는 것의 조합입니다 . 다시 시작 VSCode 새로 고침 팔레트
— Drenai

VS Code를 다시 시작할 필요가 없습니다. 소스 제어 메뉴에서 새로 고침 버튼을 누르기 만하면됩니다.
— AS

나는 실제로 이것을 처리하는 함수를 만들고 그것에 대한 작은 기사를 씁니다. 링크
— davidhu

답변:


150

분명히이 기능은 의도적 인 것입니다. Github에서 삭제 된 모든 원격 분기를 제거하는 올바른 방법은 다음 명령을 실행하는 것임을 알았습니다.

git fetch --prune

그런 다음 Visual Studio를 다시 시작하여 명령 팔레트에서 분기를 제거하십시오.


6
@Brian, 이것은 당신이 가지고있는 로컬 브랜치를 제거하지 않습니다. 이 명령은 origin/branch_nameVSCode의 빠른 스위치 자식 메뉴에서를 제거합니다. 로컬 지점을 가지고 예를 들어, test및 Github에서에 밀어, 두 가지가있다 test, 그리고 origin/test힘내 지점 메뉴에서 자두 만 제거 origin/test지점이 아닌 test지점.
— davidhu

@ 브라이언 나는이 VS 코드를 다시 시작한 후 원격 삭제 지점을 취소 한 것을 발견
— 데이비드 윌튼에게

이 명령은 작동하지 않습니다. git branch사용 가능한 모든 분기가있는 드롭 다운을 보려면 명령을 수행 하거나 분기 이름을 클릭 할 때 목록에있는 모든 분기가 여전히 표시됩니다.
— Anna Olshevskaia

@AnnaOlshevskaia git branch는 로컬 분기 만 나열 하며이 명령은 remotes/branch_name분기 를 제거합니다 . git branch -a모든 것을 보십시오 .
— davidhu

2
VS Code를 다시 시작할 필요가 없습니다. 소스 제어 메뉴에서 새로 고침 버튼을 누르기 만하면됩니다
— AS

72

Command Pallete (Ctrl-Shift-P)를 열고 Git : Delete Branch ... 를 선택하여 Visual Studio Code에서 로컬 브랜치를 제거 할 수 있습니다. 그런 다음 목록에서 적절한 브랜치를 선택하여 로컬 브랜치를 삭제할 수 있습니다.


1
그것을 통해 테스트하지는 않았지만 로컬 브랜치 만 표시하는 것처럼 보이므로 설명 된대로 작동해야합니다.
— jave.web

2
@TylerBell 그가 이미 말했듯이 원격 분기가 아닌 로컬 분기를 제거하는 방법입니다.
— Anbuselvan Rocky

2
이것이 답이되었을 것입니다. 내가 왜 그렇게 멍청해서 이것을 스스로 알지 못하는지 모르겠습니다. 감사합니다 @ 매튜 - 디즈니 - 요리
— Serzhan 아크메 토프

17

GitHub에서 제거 된 브랜치는 잘 ... GitHub에서 제거되었습니다. 컴퓨터에는 여전히 분기의 로컬 사본이 있습니다. 로컬 브랜치를 삭제하려면 git branch -d the_local_branch. VS Code에는 명령이 없지만 명령을 사용하여 VSCode에서 터미널을 시작하고 View: Toggle Integrated Terminal명령을 실행할 수 있습니다.

지점 관리에 대한 자세한 내용은 git 설명서 ( https://git-scm.com/book/be/v2/Git-Branching-Branch-Management)를 참조하십시오.


감사합니다. 예, 저는 현재 git 명령을 사용하고 있습니다.하지만 vscode git sync가 리모컨이 제거했음을 발견하거나 강조 표시하기를 바랐습니다. 추측하지 마십시오 :-)
— Drenai

git-command 라인 내에서 네이티브 git 명령을 지원하지 않는다는 것은 매우 어리석은 일입니다. 잘못 설계되었습니다.
— 스티븐

또한 여기에서 연장을 기다리고 있습니다 :)
— Marko

1
에서 위의 대답을 참조하십시오 @ 매튜 - 디즈니 - 요리
— Orangutech

17

명령 팔레트를 열고 (Ctrl + Shift + P) Git : Fetch (Prune)를 선택 합니다.

이 기능 은 2018 년 11 월 20 일에 VS Code에 병합 되었습니다.


1
git pull in vscode의 기본 동작을 만드는 방법이 있습니까?
— Tuncay Göncüoğlu

9

나는 명령 팔레트에서 Git Fetch (Prune)를 사용했기 때문에 병합 된 로컬 브랜치를 어떻게 삭제할 수 있습니까?라는 질문을 해석했습니다 . 이것은 "해킹"으로 간주 될 수 있지만 제가 사용하는 것입니다. PowerShell 터미널에서 :

$branches = (git branch --merged).replace(" ", "").replace("*", "") | ? { $_ -ne "develop" -and $_ -ne "master" }
foreach ($branch in $branches) { git branch $branch -d }

PoSH에 익숙하지 않은 경우 다음 작업을 수행합니다. 첫 번째 줄은 모든 병합 된 분기의 이름을 가져오고 (개발 및 마스터 제외) 두 번째 줄은 해당 목록을 반복하고 "git branch -d ". 브랜치가 완전히 병합되면 다음이 표시됩니다.

Deleted branch <branch name> (was <commit ID>).

각 지점에 대해. 때때로 나는 삭제에 실패한 브랜치를 만나게 될 것입니다. 이런 일이 발생하고 삭제해도 안전하다고 확신하는 경우 (즉, 저장되지 않은 로컬 작업을 잃지 않을 것입니다) 다음을 실행할 수 있습니다.

git branch <branch name> -D

대문자 D- 로컬 브랜치 를 강제로 삭제합니다.


즉, 하나 미친 PowerShell을 내가 실행하는 용기에 대한 upvote에 제공해야 command😊입니다 당신의 repo에
— Drenai

2
천재성과 광기 사이에는 미세한 경계가 있습니다. 이것은 광기 측면에서 그 선에서 멀리 떨어져 있습니다.
— Darren G

1
아니에요. 그것은 당신이 그것을 보면, 어쨌든 때, 그것은 여기에서 답변 단지 파워 쉘 번역의 복잡한 것이 아니다 : stackoverflow.com/questions/6127328/...
— 스콧 스탠

@ScottStafford 나에게 분기를 삭제하는 170 자 명령은 simple | complex분할 의 복잡한면에 있습니다 😉
— Drenai dec

7

다음 명령을 실행하기 만하면됩니다.

git remote prune origin

추가로 할 수있는 일이 있습니다. 그 이유를 위해 터미널을 여는 것이 때때로 짜증나 기 때문입니다. vscode에 작업을 추가 할 수 있습니다.

그렇게하려면 다음 단계를 따르십시오.

  1. VSCode 보기> 명령 팔레트 (cmd / ctrl + Shift + P)
  2. 작업 구성 유형
  3. 템플릿에서 tasks.json 파일 만들기를 선택 하면 .vscode 폴더 아래에 새 파일이 생성됩니다 .
  4. 작업 배열 내부에 다음을 추가하십시오.

{ "label": "Git Prune", "type": "shell", "command": "git remote prune origin", "problemMatcher": []}

사용 방법:

  1. 명령 팔레트 열기
  2. 작업 실행을 입력 하고 선택하십시오.
  3. Git Prune 선택

참고:

  1. 힘내 자두

의 git remote prune origin대답과 다른지 알고 git fetch --prune있습니까? 작업 실행 세부 사항은 게시에 대 한 좋은 덕분에
— Drenai

@Drenai 아니요, 그들은 동일합니다. 그러나 전체 응답을 찾아 여기에
— 보그 Alexandru Militaru에게

5

다음을 사용하여 모든 로컬 분기 (마스터 제외)를 제거 할 수 있습니다.

git branch -r | grep -v "master" | xargs git branch -D

그리고 origin/XXXXVSCode에서 origin와 같이 표시 되지만 이미 삭제 된 모든 분기를 제거 할 수 있습니다 .

git fetch --prune

노트 :

위의 첫 번째 명령 ( https://stackoverflow.com/a/52006270/3120163 에서 가져옴 ) :

  • 모든 지점을 나열
  • 목록에서 마스터 분기 제거
  • 목록에서 분기 삭제

첫 번째 명령에 대한 설명을 추가 할 수 있다면 좋을 것입니다-매우 편리합니다 👍
— Drenai

2
나는 설명 @Drenai 추가
— 아드 르노

4

이 문제를 해결할 방법을 찾았습니다. 따라서 Github 리포지토리에 연결된 원격을 제거한 다음 원격을 다시 추가해야합니다.

Github에서 삭제 된 모든 분기는 더 이상 vscode에 표시되지 않습니다. origin이것이 원격 저장소의 이름 이라고 가정합니다 .

git remote remove origin

그때

git remote add origin git@github.com:your-username/repo-name.git

1
내가 알기로는 아니야. 더 이상 존재하지 않는 원격 분기를 제거하는 유일한 방법입니다.
— davidhu

3

더 짧은 명령은 다음과 같습니다.

git fetch -p

1

당신은 필요 없어 git fetch --prune더 이상하고 다시 시작 VSCode.
VSCode 1.52 (2020 년 11 월)를 사용하면 다음을 사용할 수 있습니다.

Git : 가져 오기시 정리

설정을 활성화하면 원격 참조를 가져올 때 git.pruneOnFetchVS 코드가 실행 git fetch --prune됩니다.

GitHub에서 삭제 된 후에는 더 이상 로컬에 추가 분기가 없습니다.

PR 89249 참조 , 문제 86813 수정 :

용법:

{
   "git.pruneOnFetch": true
}

false기본 설정입니다 .

이것은 --prune모든 git fetch에 플래그를 추가합니다 .

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