문제

현재 저장소에는 다음과 같은 출력이 있습니다.

$ git branch -a
* master
  remotes/origin/master
  remotes/public/master

삭제하고 싶어요 remotes/public/master 지점 목록에서:

$ git branch -d remotes/public/master
error: branch 'remotes/public/master' not found.

또한, git remote 이상해요, 목록에 없으니까 public:

$ git remote show 
origin

브랜치 목록에서 'remote/public/master'를 어떻게 삭제하나요?

업데이트하고 시도했습니다. git push 명령:

$ git push public :master
fatal: 'public' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
도움이 되었습니까?

해결책

정리가 필요할 수도 있습니다

git gc --prune=now

아니면 자두가 필요할 수도 있어요

git remote prune public

치다

<name> 아래의 오래된 추적 분기를 모두 삭제합니다.이러한 오래된 분기는 <name>이 참조하는 원격 저장소에서 이미 제거되었지만 "remotes/<name>"에서 여전히 로컬로 사용할 수 있습니다.

--dry-run 옵션을 사용하면 어떤 가지를 정리할지 보고하지만 실제로 정리하지는 않습니다.

그러나 이러한 항목은 이전에 다음과 같이 정리되어야 하는 것으로 보입니다.

git remote rm public 

RM

<name>이라는 원격을 제거합니다.리모컨의 모든 원격 추적 브랜치 및 구성 설정이 제거됩니다.

따라서 구성 파일을 직접 편집했는데 이런 일이 발생하지 않았거나 권한 문제가 있을 수 있습니다.

다시 실행해서 무슨 일이 일어나는지 확인해 보세요.

조언 컨텍스트

에서 살펴보시면 개정 로그, 당신은 내가 더 "올바른" 기술을 제안했다는 것을 알게 될 것입니다. 어떤 이유로든 저장소에서 작업하고 싶지 않았습니다.

나는 OP가 트리를 일관되지 않은 상태로 남겨서 트리가 약간 이상하게 동작하게 만드는 일을 했다고 의심했습니다. git gc 왼쪽 크러프트를 수리해야 했습니다.

대개 git branch -rd origin/badbranch 로컬 추적 지점을 누킹하는 데 충분합니다. 또는 git push origin :badbranch 원격 지점을 누킹하기 위해 대개 당신은 것입니다 절대 전화해야 해 git gc

다른 팁

당신이해야 할 일은

git fetch -p

원격으로 삭제 된 모든 지역 지점을 제거합니다.

GIT 1.8.5+에 있다면 자동으로 설정할 수 있습니다.

git config fetch.prune true

또는

git config --global fetch.prune true
git push public :master

이렇게하면 이름이 지정된 원격 브랜치가 삭제됩니다 master 켄트 프레드릭이 지적한대로.

원격 추적 지점을 나열하려면 :

git branch -r

원격 트래킹 브랜치를 삭제하려면 :

git branch -rd public/master

당신이해야 할 일은

$ git branch -rd origin/whatever 

그렇게 간단합니다. 여기서 GC를 호출 할 이유가 없습니다.

git gc --prune=now 당신이 원하는 것이 아닙니다.

git remote prune public

또는 git remote prune origin # 원격 소스 인 경우

당신이 원하는 것입니다

Ref가 포장되었을 때 받아 들여진 답변은 저에게 효과가 없었습니다. 그러나 이것은 다음과 같습니다.

$ git remote add public http://anything.com/bogus.git
$ git remote rm public

제 경우에는 저장된 항목을 삭제하려고했습니다. .git/packed-refs. 이 일반 텍스트 파일을 편집하고 항목을 삭제할 수 있습니다. git br -D 만지는 방법을 모릅니다 (적어도 VER 1.7.9.5에서).

여기서이 솔루션을 찾았습니다. https://stackoverflow.com/a/11050880/1695680

git push origin --delete <branch name>

참조 : http://www.gitguys.com/topics/adding-and-removing-remote-branches/

나는 비슷한 문제가 있었다. 답이 도움이되지 않았습니다. 제 경우에는 두 개의 제거 된 원격 저장소가 영구적으로 표시되었습니다.

나의 마지막 아이디어는 손으로 모든 참조를 제거하는 것이 었습니다.

저장소를 "Repo"라고 가정 해 봅시다. 나는했다 :

find .git -name Repo

해당 파일과 디렉토리를 삭제했습니다

grep Repo -r .git

이것은 해당 라인을 제거한 일부 텍스트 파일을 발견했습니다. 이제 모든 것이 괜찮은 것 같습니다.

보통 당신은이 직업을 git에 맡겨야합니다.

나는 몰랐다 git branch -rd, 이와 같은 문제를 해결하는 방식은 저의 리포지기를 원격 리포지토리로 취급하고 원격 삭제를 수행하는 것입니다. git push . :refs/remotes/public/master. 다른 방법이 작동하지 않고 제거하고 싶은 이상한 참조가 있다면,이 원시 방식은 확실합니다. 그것은 당신에게 모든 종류의 참조를 제거 (또는 생성) 할 수있는 정확한 정밀도를 제공합니다.

약간 관련이 있지만 여전히 우리가 가진 것과 같은 상황에서 도움이 될 수 있습니다. 우리는 원격 저장소에 네트워크 파일 공유를 사용합니다. 지난 주에 일이 진행되고 있었는데, 이번 주에 우리는 "원격 원산지는 Branch Refs/Heads/Mas

그러나 우리는 부패한 일에 아무것도하지 않았다고 믿었습니다. NFS는 스냅 샷을 수행하므로 각 "이전 버전"을 검토하고 3 일 전에 리포지토리의 MB 크기가 282MB에서 33MB로 진행되었으며 약 1,403 개의 새로운 파일과 300 개의 폴더가 존재하는 것을 보았습니다. 나는 동료들을 물었다. 그리고 그날은 그날 푸시를 시도했다.

NFS "복원"기능을 사용하여 해당 날짜 직전으로 복원했으며 이제 모든 것이 다시 잘 작동했습니다. 나는 이전에 자두를 시도했지만 도움이되지 않는 것 같습니다. 어쩌면 가혹한 정리가 효과가 있었을 것입니다.

이것이 언젠가 다른 사람에게 도움이되기를 바랍니다!

어치

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top