자동 완성에서 삭제 된 분기 이름을 제거하려면 어떻게합니까?


120

git branch -d myBranch브랜치를 삭제 하곤 했어요 . 나는 마스터 오전에 새로운 지점을 체크 아웃 할 때 그러나 git checkout, myBranch여전히 탭 자동 완성에 나타납니다.

myBranch대한 탭 자동 완성에서 이름 을 제거하려면 어떻게해야 git checkout합니까?


10
합니까 git branch -a여전히 목록 중 하나 myBranch또는 origin/myBranch? 경우에도, 그 참고 myBranch존재하지 않는, git checkout myBranch여전히에 대한 유효한 바로 가기 인 git checkout -b myBranch origin/myBranch경우에 origin/myBranch존재한다.
twalberg

2
답변으로 게시 할 가치가있는 @twalberg.
cmbuckley 2013-07-29

답변:


81

이에 대한 한 가지 가능한 이유는 원격 분기 (예 origin/myBranch:)가 여전히 존재 git checkout myBranch하는 경우 git checkout -b myBranch origin/myBranch. 이는 처음으로 원격 지점을 체크 아웃하여 동일한 이름의 로컬 추적 지점을 만드는 일반적인 경우의 편의를위한 것입니다.

완성을 위해 정확히 무엇을 사용하는지에 따라 다른 가능성도 있지만, 이것이 제가 확인하는 첫 번째 사항 중 하나입니다. 를 실행 git branch -a하고 origin/myBranch목록에있는 경우 (또는있는 origin경우 이외의 원격에 대한 하나 ) 그게 범인 일 수 있습니다.


2
감사! 그게 범인 인 것 같습니다. origin/myBranch여전히 존재합니다. myBranch온라인 인터페이스를 통해 Github 에서 브랜치를 삭제 한 경우 git branch -d origin/myBranch해당 원격 브랜치를 제거 하기 위해 호출해도 안전 합니까?
John Hoffman

99
@JohnHoffman 안전해야하지만 더 나은 방법은 git fetch --prune origin. 그러면 원격에 더 이상 존재하지 않는 모든 로컬 추적 분기가 정리됩니다.
twalberg

3
@twalberg 나는 단순히 로컬 및 원격 분기를 삭제하는 것만으로 자동 완성에서 모든 이전 분기를 제거하기에 충분하다고 생각하지 않습니다. 나는 당신이 믿는 필요git fetch --prune origin자동 완성에서 멀리 이동하기 위해 원격 지사에 로컬 참조하십시오. 댓글에서 답변으로 옮기는 것이 좋습니다. 어쨌든 도움이 된 귀하의 답변에 감사드립니다!
timmyl

4
git branch -a나를 올바른 길로 인도했습니다. 내 동료는 git fetch --prune --all모든 원격 장치에서 죽은 가지를 모두 잘라내 라고 제안 했는데, 이는 포크가 많은 많은 개발자와 작업 할 때 유용합니다.
ericsoco

173

git fetch --prune --all

한 줄 수정이므로 자체 답변으로 게시하지만 투표하는 경우 위의 @twalberg의 답변에 투표하십시오.

@twalberg의 제안 git branch -a은 나를 올바른 길로 인도했습니다. 내 동료는 git fetch --prune --all모든 원격 장치에서 죽은 가지를 모두 잘라내 라고 제안 했는데, 이는 포크가 많은 많은 개발자와 작업 할 때 유용합니다.


19
받아 들여진 대답은 왜 이런 일이 발생하는지 좋은 설명을 제공하지만이 대답은 문제에 대한 실제 해결책을 제시하므로 IMHO로 받아 들여야합니다.
Patrick Oscity 2015 년

3
죽은 가지 이름이 여전히 자동 완성에 표시됩니다.
Fitsyu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.