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.