Programing

Git 치명적 : 참조에 잘못된 형식이 있습니다 : 'refs / heads / master

lottogame 2020. 8. 17. 09:29
반응형

Git 치명적 : 참조에 잘못된 형식이 있습니다 : 'refs / heads / master


저장소 Dropbox를 동기화하는 데 사용 하고 git있지만 지금 시도 push하면 오류가 발생합니다.

fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'

따라서 Dropbox가 충돌을 감지하고 복사본을 만든 것 같습니다. 네, 문제 없습니다. 충돌하는 파일을 삭제했습니다. 그래도 위의 자식 오류가 발생합니다.

$ git checkout master
    M   index.html
    Already on 'master'
$ git add .
$ git commit -a -m "Cleanup repo"
    [master ff6f817] Cleanup repo
    1 file changed, 5 insertions(+), 5 deletions(-)
$ git push
    fatal: Reference has invalid format: 'refs/heads/master (MacBook-Pro's conflicted copy 2012-10-07)'
    The remote end hung up unexpectedly`

이 문제를 어떻게 해결할 수 있습니까? 감사.


이 명령은 되돌릴 수 없기 때문에 확실하지 않은 경우 저장소를 백업하십시오.

먼저 repo 디렉토리로 이동하십시오.

cd myrepo

그런 다음 충돌하는 파일을 재귀 적으로 검색하고 삭제하십시오.

find . -type f -name "* conflicted copy*" -exec rm -f {} \;

마지막으로 git의 packed-refs 파일에서 "충돌 된"참조를 제거하십시오.

awk '!/conflicted/' .git/packed-refs > temp && mv temp .git/packed-refs

충돌하는 파일은 여러 위치에있을 수 있습니다.

.git/logs/refs/remotes/origin/
.git/logs/refs/heads/
.git/refs/remotes/origin/
.git/refs/heads/

또는 .git하위 디렉토리의 모든 곳을 볼 수 있습니다 .find . -name '*conflicted*'

그렇지 않으면 활성 분기를 나열하고 의심스러운 항목을 git branch -a삭제 ( git branch -d)합니다.


이는 동료가 Dropbox가 업데이트되기 전에 변경 사항을 푸시하고 PC를 종료 할 때도 발생합니다.

나는 그것을 아주 간단하게 해결했다.

충돌하는 사본을 삭제했습니다. (XXXX의 충돌 사본 yyyy-mm-dd)

그리고 정상적으로 당기십시오.

내 동료가 엉망이되기 전에 변경 사항을 적용했습니다. 그리고 그는 자신의 변화를 다시 밀어 붙입니다. 이번에는 종료하지 않습니다. :)


.git 폴더에서 충돌하는 모든 파일을 삭제할 수 있었지만 더 이상 존재하지 않는 파일에 대한 오류가 계속 발생했습니다.

나를위한 수정은 .git/refs/packed_refs"충돌"텍스트가 포함 된 줄을 열고 삭제하는 것이 었습니다 .


나에게는 오류가 발생했습니다. fatal: Reference has invalid format: 'refs/tags/r0.2:3'

/.git/packed_refs 파일 로 이동하여 다음 줄을 삭제할 수 있습니다.refs/tags/r0.2:3

그런 다음 작동하기 시작했습니다. 하지만 처음에 왜 일어 났는지 모르겠습니다.


해볼 git checkout master건강한, 잘라는 이름의 지점에 얻을 첫번째.


같은 오류가 발생했습니다

치명적 : 참조에 잘못된 형식이 있습니다 : 'refs / heads / somebranch (1)'

다음 명령의 경우

git branch

그런 다음 명령을 사용하여 잘못된 이름 (지점 이름 다음에 (1))을 검색했습니다.

find . -name 'somebranch (1)'

그리고 다음과 같은 결과를 보여주었습니다

./.git/refs/heads/somebranch (1)

somebranch IMO 의 일부 복제 버전입니다 . 그래서 다음과 같은 find 명령을 실행하여 이것을 제거했습니다.

find . -name 'somebranch (1)' -print -exec rm -rf {} \;

그런 다음 분기 명령이 성공적으로 실행됩니다.

git branch

다음과 같은 유사한 오류가 발생했습니다.

fatal: Reference has invalid format: 'refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)'

.git/refs/heads/user-search-api (Sithu's conflicted copy 2016-01-08)원격 Dropbox 저장소에서 파일 삭제 하기 만해도 문제가 해결되었습니다.

참고URL : https://stackoverflow.com/questions/12773488/git-fatal-reference-has-invalid-format-refs-heads-master

반응형