programing

Git에서 비활성 리모트 브랜치 참조를 삭제하려면 어떻게 해야 합니까?

elecom 2023. 4. 23. 10:04
반응형

Git에서 비활성 리모트 브랜치 참조를 삭제하려면 어떻게 해야 합니까?

현재 보고서에는 다음과 같은 출력이 있습니다.

$ 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

지점 목록에서 'remotes/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>이라는 이름의 리모트를 삭제합니다.리모트 트래킹브런치 및 리모트 설정 모두 삭제됩니다.

따라서 컨피규레이션파일을 수동으로 편집하여 이것이 발생하지 않았거나 권한에 문제가 있을 수 있습니다.

다시 한 번 실행해서 무슨 일이 일어나는지 지켜볼 수도 있어.


어드바이스 컨텍스트

리비전 로그를 보면 더 많은 "올바른" 기술을 제안했다는 것을 알 수 있습니다. 어떤 이유로든 저장소에서 작업하고 싶지 않았습니다.

되지 않은 하게 한 했다.git gc왼쪽 뒷부분을 수리해야 했습니다.

git branch -rd origin/badbranch으로 하기에는 "nucking" nucking "nucking" 입니다.또는git push origin :badbranch리모트 브랜치를 nucking 하기 위해서, 통상은 전화할 필요가 없습니다.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 소스일 # " " " "

당신이 원하는 것은

심판이 꽉 찼을 때 받아들여진 답변은 나에게 효과가 없었다.단, 이것은 다음과 같습니다.

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

에는 내우에 저장되어 있는 ..git/packed-refs 이 일반 할 수 .git br -D만지는 방법을 모릅니다(최소한 버전 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/

에 대해서git branch -rd이러한 문제를 스스로 해결하는 방법은, 리모트 리포트로서 취급해, 리모트 삭제를 실시하는 것입니다. git push . :refs/remotes/public/master다른 방법이 작동하지 않고, 없애고 싶은 이상한 참조가 있다면, 이 원시적인 방법은 확실합니다.어떤 종류의 참조도 삭제(또는 작성!)할 수 있는 정확한 정밀도를 제공합니다.

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

내 마지막 생각은 그것에 대한 모든 언급을 손으로 지우는 것이었다.

저장소 이름을 "Repo"라고 합니다.나는 했다:

find .git -name Repo 

그래서 대응하는 파일과 디렉토리를 .filer 폴더에서 삭제했습니다(이 폴더는 Rails 앱이나 컴퓨터 https://stackoverflow.com/a/19538763/6638513)에서 찾을있습니다).

그리고 나서 나는 했다:

grep Repo -r .git

텍스트 파일을 찾아서 해당 행을 삭제했습니다.이제, 모든 것이 괜찮아 보입니다.

보통은 이 일을 맡기는 게 좋겠어요.

관련성은 미미하지만 이전과 같은 상황에서는 도움이 될 수 있습니다.리모트 저장소에는 네트워크 파일 공유를 사용합니다.지난주에는 정상적으로 작동했지만 이번 주에는 "Remote origin이 브랜치 참조/헤드/마스터에 대한 참조를 광고하지 않았습니다.이 참조는 리모트에 존재하지 않거나 권한 설정에 의해 숨겨질 수 있습니다.

하지만 우리는 부패를 위한 어떠한 조치도 취해지지 않았다고 믿었다.NFS에서 스냅샷을 만들기 때문에 각 "이전 버전"을 검토해보니, 3일 전 저장소 크기(MB)가 282MB에서 33MB로 증가했고, 현재 약 1,403개의 새로운 파일과 300개의 폴더가 존재합니다.동료에게 문의했더니 그날 푸시하려고 해서 취소했어요.

NFS "Restore" 기능을 사용하여 해당 날짜 바로 이전으로 복원하고 이제 모든 것이 정상적으로 작동합니다.전에 가지치기를 해봤는데 도움이 안 되는 것 같았어좀 더 가혹한 청소가 먹혔을지도 몰라

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

제이

어떻게 이 혼란에 빠졌는지는 모르겠지만 오류 메시지가 약간 달랐습니다.

> git 리모트> git 브랜치경고: 끊어진 참조/리모트/원점/헤드 무시* 메인
>

하지만 이 페이지의 다른 부분에 있는 수정 사항을 약간 재해석하여 수정할 수 있었습니다.이 말은 내가 키워드를 대체했다는 뜻이다.HEAD브랜치명의 경우<remote>/<branch>다른 제안들은 모두 효과가 없었습니다.gc,prune(등)그래서 아이디어가 부족해서 잘 되길 바랐어요.어쨌든, 그것은 마법처럼 작동했다.

> git 리모트
> git 브랜치 - origin / HEAD리모트 트래킹 브랜치 오리진/HEAD를 삭제했습니다(refs/remotes/origin/main).

> git 브랜치
* 메인
>

여기 있는 모든 것을 시도해 봤지만 아무 것도 되지 않았다.다른 모든 것이 실패했을 경우는, 텍스트 파일 「.git/packed-refs」로부터 문제의 브랜치를 삭제해, 「.git\refs\remotes\origin<branchName>」로부터 문제의 브랜치를 삭제합니다.

언급URL : https://stackoverflow.com/questions/1072171/how-do-you-remove-an-invalid-remote-branch-reference-from-git

반응형