자식 참조`refs / original / refs / heads / master`를 삭제하는 방법?


35

노란색 둥근 상자에 뭐야?

스크린 샷

나는 시도했다 git branch -D, git tag -d그러나 아무도 성공하지 않습니다. 어떻게 삭제합니까?


1
승인 된 답변을 고도로 찬성하고 올바른 Alexey Ten의 답변으로 변경하는 것을 고려 하십시오 ( git update-ref -d).
Jonathon Reinhart

답변:


11

태그처럼 보이므로 다음 명령이 작동해야합니다.

git tag -d refs/original/refs/heads/master

그러나 그렇지 않다고 말 했으므로 .git디렉토리 에서 파일을 삭제할 수 있습니다 . 저장소 루트에서 다음과 같은 명령으로 얻을 수 있습니다.

rm .git/refs/tags/refs/original/refs/heads/master

git-tag명령이 실패 하면 경로가 약간 다를 수 있으므로 cd .git/refs시행 착오를 통해 문제의 머리를 찾아서 찾을 수 있습니다. 파일을 삭제하면 로컬 저장소에서 참조가 제거됩니다.


2
그러나 태그는 아니지만로 찾았습니다 .git/refs/original/refs/heads/master.
Xiè Jìléi

1
git update-refGit의 내부를 수동으로 변경하는 대신 사용하십시오 . Alexey의 답변을 참조하십시오.
wchargin

100

이 명령은 작동합니다

git update-ref -d refs/original/refs/heads/master

이것은 같은 문제로 저에게 효과적이었습니다. 참조는 .git / packed-refs라는 파일에 저장되었습니다. 그것을 열면 SHA와 문자열 "refs / original / refs / heads / master"가있는 줄을 볼 수 있습니다. 아마도 그 줄을 삭제할 수는 있지만 안전하기 위해이 명령을 사용합니다.
Matt N

14
+1 : 심판을 대신 사용하는 대신 항상 사용해야 git update-ref -d합니다 rm. 그렇지 않으면 나쁜 일이 발생할 수 있습니다.
Callum Rogers

3
이것은 허용 대답해야한다
다니엘 알더

1
@CallumRogers 왜?
wahnfrieden

6
git은 압축 참조를 사용할 수 있고 refs디렉토리에 해당 파일이 없기 때문에 @wahnfrieden
Alexey Ten

17

이것은 심판입니다. 일반적으로 다음에 의해 작성됩니다 . git filter-branch실행하기 전에 분기가 있었던 위치를 가리키는 포인터 git filter-branch입니다.

그리고 삭제 어떤 심판, 당신은 항상 로컬 저장소에 아무것도 넣지 수 있습니다 :

git push . :refs/original/refs/heads/master

다른 답변도 다른 삭제 방법을 잘 다루었습니다.


1
참조를 로컬로 삭제하기위한 "아무것도 푸시"는 매우 영리합니다.
40XUserNotFound

내 하루를 보냈습니다. 리모컨이 더 이상 존재하지 않는 리모컨 태그에 대한 참조가있었습니다. 이것이 작동 한 유일한 명령입니다.
RW4
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.