git pull을 해결할 때 error: cannot lock ref...:is at ... but expected ...

2436 단어 Git

기사 목록

  • 문제 설명
  • 문제 분석
  • 솔루션
  • 해결 횟수
  • 일로영일
  • 권장 사항
  • 문제 설명


    여러 명이 한 창고에서 협업할 때 로컬에서 git pull 작업을 수행하다가 다음 오류가 발생했습니다. 아래에 있는 프로젝트 정보를 생략하고 교체했습니다.
    error: cannot lock ref '...':is at  but expected 
    From https://....
    ! ..  -> origin/ (unable to update local ref)
    

    문제 분석


    오류 로그를 보면 로컬 지점과 원격 지점의 HEAD가 일치하지 않는 것 같습니다. 이상하게도 이 지점은 제 것이 아닙니다.
  • 원격으로 보면 코드 위탁 관리 사이트입니다. 이 오류 정보에 언급된branchName을 찾으면 두 개의 이름이 같은 지점이 있습니다. 단지 대소문자가 같지 않습니다. 그리고 이 두 지점의 마지막commit id를 각각 보면 오류 일지에 열거된 것입니다.여기를 보면 문제가 비교적 명확해져서 대략적인 방향을 고정시킨다.
  • 로컬 프로젝트의 경로로 들어가서 아래의 하위 폴더로 들어갑니다. (.git는 숨겨진 폴더입니다. 없으면 윈도우즈 컴퓨터가 숨겨진 파일을 표시하지 않고 어떻게 설정하는지 설명할 필요가 없습니다.) .git\refs\remotes\origin 안에 작은 branchName 파일이 있는 것을 발견했습니다. 그 안에 저장된 것은 완전한commit id입니다. 이것이ref입니다.
  • 다시 이곳을 보았을 때, 대문자 branchName 파일이 왜 없는지 바로 생각났다.윈도우즈 시스템에 익숙해지면 윈도우즈에서 파일 이름이 대소문자를 구분하지 않아 두 파일이 공존할 수 없다는 것을 바로 생각해야 한다.

  • 요약은 다음과 같습니다.
  • Git은 대소문자를 구분하기 때문에 대소문자는 다르지만 이름은 같은 구분이 존재한다.
  • Windows 시스템의 파일은 대소문자를 구분하지 않아서 .git\refs\remotes\origin 아래에 소문자 파일만 존재하여gitpull 때commit id가 일치하지 않는 문제가 있습니다.

  • 솔루션


    두 가지 상황으로 나누다

    당시


    만약 이 지점이 당신의 것이 아니라면, 이 두 지점을 건드리고 싶지 않으면, 지점 소유자에게 이 문제를 확인해 주십시오.단계:
  • 로컬 프로젝트의 경로로 들어가 다음 하위 폴더로 이동합니다. \.git\refs\remotes\origin
  • 문제 지점 이름의 파일 삭제
  • 을 다시 실행git pull하면 코드를 성공적으로 끌어낼 수 있습니다. 위의 폴더 아래에 방금 삭제한 파일이 있기 때문에 그때까지만 해결할 수 있습니다.

  • 한 번 일하면 영원히 편안해진다.


    만약 이 두 가지가 계속 존재하고 윈도우즈에서 일한다면, 이 문제는 계속 존재할 것이다.일로영일의 방법은 단지 하나의 지점만 보류하고 프로젝트의 구체적인 상황에 따라 평가하는 것이다.
  • 보존할 필요가 없는 두 지점 삭제
  • 코드 관리 사이트에서 직접 삭제
  • git 명령을 로컬로 실행합니다. 아래 문장을 참고하십시오.
    git branch 사용

  • 로컬 프로젝트의 경로로 들어가 다음 하위 폴더로 이동합니다. \.git\refs\remotes\origin
  • 문제 지점 이름의 파일 삭제
  • 다시 실행git pull하면 코드를 성공적으로 추출할 수 있고 앞으로도 그럴 수 있습니다. 왜냐하면 앞으로 이 경로 아래에 이런 이름의ref 파일만 있기 때문입니다.

  • 제안


    이 문제를 통해 여러분은 앞으로 윈도우즈에서git를 사용할 때 다음 지점의 이름을 주의해야 합니다. 같은 이름과 대소문자를 사용하지 말고 가능한 한 묘사적인 방법을 사용하십시오. 만약에 Jira시스템이 있다면 Jira호를 지점의 이름으로 시작할 수 있습니다.
    마지막으로 이 블로그가 여러분에게 도움이 된다면 좋아요를 눌러주세요!

    좋은 웹페이지 즐겨찾기