나는 일종의 프랑켄슈타인 스트레치/시드를 사용하고 있습니다(가장 좋은 아이디어는 아니지만, 곧 다시 설치할 계획입니다).
탭 완성은 git repo 디렉터리의 git 분기 이름에 대해 작동합니다.
:~/project $ git checkout <TAB><TAB>
Display all 200 possibilities? (y or n)
:~/project $ git checkout private-rl_<TAB><TAB>
private-rl_1219_misspelled_locale_zhtw private-rl_1950_scheduler_offset private-rl_bootstrap_rake_tasks
private-rl_1854_ldap_filter_reset private-rl_bootstrap_rake_task
그러나 여기에 표시된 일부 분기는 더 이상 존재하지 않습니다.
:~/project $ git branch
* develop
private-rl_1219_misspelled_locale_zhtw
stable
다음과 같은 경우에도 이런 일이 발생합니다.외딴가지.
여기서 무슨 일이 일어나고 있는 걸까요? git 완성 스크립트는 어떻게든 새로 고칠 수 있는 이전 분기의 캐시를 유지합니까? 탭 완성 결과에 이러한 분기가 누적되는 것을 방지하는 방법은 무엇입니까?
답변1
@PatrickMevzek의 부드러운 재촉 덕분에 나는 그것을 알아냈습니다.
내가 보는 가지들은 사실삭제된 원격 분기에 대한 참조. 위에 링크된 SO 스레드에서 가장 좋은 답변을 인용하려면,
$ git remote prune origin
나를 위해 고쳐졌습니다.
답변2
설정에 따라 오래되었거나 삭제된 브랜치처럼 보일 수 있는 또 다른 출처가 있습니다. git 완료에서도 이를 제안할 수 있습니다.상표가지와 함께.
나는 최근 이것에 속았습니다. CI/CD 파이프라인이 모든 빌드에 태그를 지정했으며 몇 년 전에 일부 브랜치가 릴리스 및/또는 삭제된 경우에도 태그가 여전히 존재했습니다. 여기서는 리모컨의 오래된 라벨을 청소하는 것이 해결책입니다(여기 가이드가 있습니다.
답변3
git/contrib/completion/
git(1)은 소스 코드와 함께 기여된 파일을 제공합니다. 쉘 스크립트 처리가 완료되었습니다.