Git에서 bash 자동 완성을 사용하면 더 이상 가지고 있지 않은 오래된 리모컨의 분기가 계속 표시됩니다. 내가 할 때 git branch -la
그것은 오래된 리모컨과 가지를 보여 주지만 그렇지 git branch -l
않습니다. A ls .git/refs/remotes/
도 그들을 보여줍니다. 그러나 그들은 내 .git / config에 존재하지 않으며 내가 실행할 때도 표시되지 않습니다 git remote show
.
그래서 내 자동 완성 목록이 지금 너무 길기 때문에 어떻게 제거합니까?
나는 이미 시도했다 :
git reflog expire --expire=now --all
git gc --prune=now
rm .git/refs/remotes/theoldremote
git remote prune theoldremote
나는 또한 내가 repo를 다시 복제 할 수 있다는 사실을 알고 있지만 그것은 단지 속임수입니다 😉
답변
Git은 원격 저장소에서 분기가 삭제 된 경우 (로컬) 원격 추적 분기를 자동으로 삭제하지 않습니다. 또한 V2.0.1 이전에는 원격 추적 분기가 git 구성에서 원격을 제거했을 때 일부 경우 삭제되지 않았습니다 (VonC의 답변 참조).
원격 저장소 중 하나에 대해 오래된 원격 추적 분기 (원격 저장소에서 삭제 된 분기)를 삭제하려면 다음을 실행하십시오.
git remote prune <remote>
man 페이지를 인용하거나 git remote
:
치다
<name> 아래의 모든 부실 추적 분기를 삭제합니다. 이러한 부실 분기는 <name>에서 참조하는 원격 저장소에서 이미 제거되었지만 “remotes / <name>”에서 로컬로 계속 사용할 수 있습니다.
–dry-run 옵션을 사용하여 잘라낼 분기를보고하지만 실제로 잘라내지는 않습니다.
그러나 귀하의 질문에서 수동으로 제거 한 것처럼 .git/refs/remotes/theoldremote
보이므로 Git은 더 이상 원격 추적 분기가 속한 원격 저장소에 대해 알지 못합니다. 그렇게해서는 안됩니다.
원격 저장소를 제거하는 일반적인 방법은 다음을 실행하는 것입니다.
git remote rm <remote>
이렇게하면에서 리모컨이 제거되고 원격 .git/config
추적 분기가 삭제됩니다.
에서 디렉토리를 삭제 .git/refs/remotes/
하면 브랜치는 뒤에 남아 있습니다. 그런 다음 수동으로 제거해야합니다.
git branch -rd <remote>/<branchname>
-r
원격 지점을 삭제하는 옵션이 필요합니다 .
답변
나는 사용한다
git push origin :remote_branch
서버에서 분기를 제거합니다.
git remote prune origin
더 이상 서버에 존재하지 않는 원격 참조를 제거하려면
답변
참고 : git remote prune이 답이지만 git 2.0.1 (2014 년 6 월 25 일)부터는 git remote rm
원격 추적 브랜치를 제거 하는 것으로 시작됩니다 .
그러니 바라건대, git remote rm
.
참조 b07bdd3 커밋 에 의해 (옌스 린드 스트 룀 jensl
)
remote rm
: 마지막으로 원격 구성 삭제
원격을 제거 할 때 원격 구성을 삭제하기 전에 원격 추적 분기를 삭제하십시오.
이렇게하면 원격 추적 분기를 삭제하는 동안 작업이 실패하거나 중단 된 경우 명령을 다시 실행하여 작업을 완료 할 수 있습니다 .
그러나 필요한 경우 먼저 설정 한 경우 간단한 git fetch
것으로 충분할 수 있습니다.
git config --global fetch.prune true
cd /path/to/repo
git config remote.origin.prune true
답변
삭제하려면 브랜치에 아무것도 푸시 하지 마십시오 .
git push remote :remote_branch
문서 어딘가에 있지만 실제로는 명확하지 않습니다.
아니면 내가 당신의 질문을 오해 했습니까?
답변
알겠습니다. 문제는 원격이 더 이상 존재하지 않지만 git 데이터베이스 어딘가에 있다는 것입니다. 리모컨을 다시 추가 한 다음
git remote prune theremote
git remote rm theremote
git gc --prune=now
그 후 그들은 목록에서 사라집니다. 어떻게 든 추측하기 전에 올바르게 제거하지 않았습니다.
답변
실행했을 때 서버 측에서 삭제 된 원격 분기가 계속 나타날 때 혼란 스러웠습니다.
$ git branch --all
다음 명령은 나를 위해 이것을 수정했습니다 (git 버전 2.25.0에서).
$ git remote update --prune