VSCode에서 풀 요청을 수행하고 GitHub에서 분기를 삭제 한 후에도 해당 분기가 Visual Studio Code에 계속 표시됩니다. 분기를 선택하면 예상대로 오류가 발생합니다.
VSCode에서 이제 삭제 된 분기를 어떻게 제거합니까? 자동으로 수행 할 수 있습니까?
답변:
분명히이 기능은 의도적 인 것입니다. Github에서 삭제 된 모든 원격 분기를 제거하는 올바른 방법은 다음 명령을 실행하는 것임을 알았습니다.
git fetch --prune
그런 다음 Visual Studio를 다시 시작하여 명령 팔레트에서 분기를 제거하십시오.
origin/branch_name
VSCode의 빠른 스위치 자식 메뉴에서를 제거합니다. 로컬 지점을 가지고 예를 들어, test
및 Github에서에 밀어, 두 가지가있다 test
, 그리고 origin/test
힘내 지점 메뉴에서 자두 만 제거 origin/test
지점이 아닌 test
지점.
git branch
사용 가능한 모든 분기가있는 드롭 다운을 보려면 명령을 수행 하거나 분기 이름을 클릭 할 때 목록에있는 모든 분기가 여전히 표시됩니다.
git branch
는 로컬 분기 만 나열 하며이 명령은 remotes/branch_name
분기 를 제거합니다 . git branch -a
모든 것을 보십시오 .
Command Pallete (Ctrl-Shift-P)를 열고 Git : Delete Branch ... 를 선택하여 Visual Studio Code에서 로컬 브랜치를 제거 할 수 있습니다. 그런 다음 목록에서 적절한 브랜치를 선택하여 로컬 브랜치를 삭제할 수 있습니다.
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 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- 로컬 브랜치 를 강제로 삭제합니다.
simple | complex
분할 의 복잡한면에 있습니다 😉
다음 명령을 실행하기 만하면됩니다.
git remote prune origin
추가로 할 수있는 일이 있습니다. 그 이유를 위해 터미널을 여는 것이 때때로 짜증나 기 때문입니다. vscode에 작업을 추가 할 수 있습니다.
그렇게하려면 다음 단계를 따르십시오.
{ "label": "Git Prune", "type": "shell", "command": "git remote prune origin", "problemMatcher": []}
사용 방법:
참고:
git remote prune origin
대답과 다른지 알고 git fetch --prune
있습니까? 작업 실행 세부 사항은 게시에 대 한 좋은 덕분에
다음을 사용하여 모든 로컬 분기 (마스터 제외)를 제거 할 수 있습니다.
git branch -r | grep -v "master" | xargs git branch -D
그리고 origin/XXXX
VSCode에서 origin
와 같이 표시 되지만 이미 삭제 된 모든 분기를 제거 할 수 있습니다 .
git fetch --prune
노트 :
위의 첫 번째 명령 ( https://stackoverflow.com/a/52006270/3120163 에서 가져옴 ) :
이 문제를 해결할 방법을 찾았습니다. 따라서 Github 리포지토리에 연결된 원격을 제거한 다음 원격을 다시 추가해야합니다.
Github에서 삭제 된 모든 분기는 더 이상 vscode에 표시되지 않습니다. origin
이것이 원격 저장소의 이름 이라고 가정합니다 .
git remote remove origin
그때
git remote add origin git@github.com:your-username/repo-name.git
당신은 필요 없어 git fetch --prune
더 이상하고 다시 시작 VSCode.
VSCode 1.52 (2020 년 11 월)를 사용하면 다음을 사용할 수 있습니다.
Git : 가져 오기시 정리
설정을 활성화하면 원격 참조를 가져올 때
git.pruneOnFetch
VS 코드가 실행git fetch --prune
됩니다.
GitHub에서 삭제 된 후에는 더 이상 로컬에 추가 분기가 없습니다.
용법:
{ "git.pruneOnFetch": true }
false
기본 설정입니다 .이것은
--prune
모든 git fetch에 플래그를 추가합니다 .
git fetch --prune
원격 분기 참조를 업데이트 /git branch -d <branch-name>
삭제하고 로컬 분기를 삭제 (-D
강제) 하는 것의 조합입니다 . 다시 시작 VSCode 새로 고침 팔레트