- 오류: 리포지토리 또는 개체를 찾을 수 없음
<url>
에 대한 잘못된 상태: 501- 개체를 푸시할 때 항상 자격 증명이 필요합니다
- LFS 개체가 푸시 중 누락됨
- LFS 개체 외부 호스팅
- LFS 개체 푸시 시 I/O 시간 초과
- 포인터여야 할
n
개의 파일을 발견했지만 그렇지 않음
Git LFS 문제 해결
Git LFS를 사용할 때 다음과 같은 문제에 직면할 수 있습니다.
-
Git LFS의 원래 v1 API는 지원되지 않습니다.
-
Git LFS 요청은 HTTPS 자격 증명을 사용하므로 Git 자격 증명 저장소를 사용해야 합니다.
-
그룹 위키는 Git LFS를 지원하지 않습니다.
오류: 리포지토리 또는 개체를 찾을 수 없음
이 오류는 몇 가지 이유로 발생할 수 있습니다.
-
특정 LFS 개체에 대한 권한이 없습니다. 프로젝트에 푸시할 수 있는 권한이나 프로젝트에서 가져올 수 있는 권한이 있는지 확인하십시오.
-
프로젝트에서 LFS 개체에 액세스할 수 없습니다. 푸시(또는 가져오기)하려는 LFS 개체가 더 이상 프로젝트에 사용할 수 없습니다. 대부분의 경우, 개체는 서버에서 제거되었습니다.
-
로컬 Git 리포지토리가 더 이상 지원되지 않는 Git LFS API 버전을 사용하고 있습니다. 로컬 Git LFS 복사본을 업데이트하고 다시 시도하십시오.
<url>
에 대한 잘못된 상태: 501
Git LFS는 실패 내용을 로그 파일에 기록합니다. 이 로그 파일을 보려면:
-
터미널 창에서 프로젝트 디렉토리로 이동합니다.
-
최근 로그 파일을 보려면 다음 명령을 실행합니다:
git lfs logs last
이 문제는 501
오류를 유발할 수 있습니다:
-
Git LFS가 프로젝트 설정에서 활성화되어 있지 않습니다. 프로젝트 설정을 확인하고 Git LFS를 활성화하십시오.
-
GitLab 서버에서 Git LFS 지원이 활성화되어 있지 않습니다. GitLab 관리자에게 Git LFS가 서버에서 활성화되어 있지 않은 이유를 문의하십시오. Git LFS 지원 활성화 방법에 대한 지침은 LFS 관리 문서를 참조하십시오.
-
Git LFS 클라이언트 버전이 GitLab 서버에서 지원되지 않습니다. 다음을 수행해야 합니다:
-
git lfs version
으로 Git LFS 버전을 확인합니다. -
git lfs -l
로 프로젝트의 Git 구성을 확인하여 더 이상 지원되지 않는 API의 흔적을 찾습니다. 구성에서batch = false
로 설정되어 있으면 해당 줄을 제거한 후 Git LFS 클라이언트를 업데이트하십시오. GitLab은 1.0.1 이상 버전만 지원합니다.
-
개체를 푸시할 때 항상 자격 증명이 필요합니다
Git LFS는마다 HTTP 기본 인증을 사용하여 사용자를 인증하므로 사용자 HTTPS 자격 증명이 필요합니다. 기본적으로 Git은 사용하는 각 리포지토리에 대해 자격 증명을 기억하는 것을 지원합니다. 자세한 내용은 공식 Git 문서를 참조하십시오.
예를 들어, Git에 개체를 푸시할 것으로 예상되는 시간 동안 비밀번호를 기억하도록 지시할 수 있습니다. 이 예시는 자격 증명을 한 시간(3600초) 동안 기억하며, 한 시간이 지나면 다시 인증해야 합니다:
git config --global credential.helper 'cache --timeout=3600'
자격 증명을 저장하고 암호화하는 방법은 다음과 같습니다:
- MacOS:
osxkeychain
을 사용합니다. - Windows:
wincred
또는 Microsoft의 Git Credential Manager for Windows를 사용합니다.
사용자 자격 증명을 저장하는 방법에 대해 자세히 알아보려면 Git Credential Storage 문서를 참조하십시오.
LFS 개체가 푸시 중 누락됨
GitLab은 LFS 포인터를 감지하기 위해 푸시 시 파일을 검사합니다. LFS 포인터가 감지되면,
GitLab은 해당 파일이 LFS에 이미 존재하는지 확인하려고 시도합니다. 별도의
서버에서 Git LFS를 사용하는 경우, 다음 문제에 직면할 수 있습니다:
-
로컬에 Git LFS가 설치되어 있는지 확인합니다.
-
git lfs push --all
로 수동 푸시를 고려합니다.
GitLab 외부에 Git LFS 파일을 저장하는 경우,
프로젝트에 대한 Git LFS 사용 또는 사용 안함을 설정할 수 있습니다.
LFS 개체 외부 호스팅
사용자 지정 LFS URL을 설정하여 LFS 개체를 외부에 호스팅할 수 있습니다:
git config -f .lfsconfig lfs.url https://example.com/<project>.git/info/lfs
Nexus Repository와 같은 기기에 LFS 데이터를 저장하는 경우 이 작업을 수행할 수 있습니다.
외부 LFS 저장소를 사용하는 경우, GitLab은 LFS 개체를 검증할 수 없습니다.
GitLab LFS 지원이 활성화된 경우 푸시는 실패합니다.
푸시 실패를 방지하려면, 프로젝트 설정에서 Git LFS 지원을 비활성화할 수 있습니다. 그러나 이 방법은
바람직하지 않을 수 있으며, 다음과 같은 GitLab LFS 기능도 비활성화됩니다:
- LFS 개체 검증.
- LFS에 대한 GitLab UI 통합.
LFS 개체 푸시 시 I/O 시간 초과
네트워크 상태가 불안정한 경우, Git LFS 클라이언트가 파일 업로드를 시도할 때 시간 초과가 발생할 수 있습니다.
다음과 같은 오류 메시지를 볼 수 있습니다:
LFS: Put "http://example.com/root/project.git/gitlab-lfs/objects/<OBJECT-ID>/15":
read tcp your-instance-ip:54544->your-instance-ip:443: i/o timeout
error: failed to push some refs to 'ssh://example.com:2222/root/project.git'
이 문제를 해결하려면, 클라이언트 활동 시간 초과 값을 더 높게 설정하십시오. 예를 들어,
시간 초과를 60초로 설정하려면:
git config lfs.activitytimeout 60
포인터여야 할 n
개의 파일을 발견했지만 그렇지 않음
이 오류는 저장소가 Git LFS로 파일을 추적해야 하지만 추적하지 않음을 나타냅니다.
문제 326342, GitLab 16.10에서 수정된 이 문제의 한 원인입니다.
문제를 해결하려면, 영향을 받는 파일을 마이그레이션하고 저장소에 푸시하십시오:
-
파일을 LFS로 마이그레이션합니다:
git lfs migrate import --yes --no-rewrite "<your-file>"
-
저장소에 다시 푸시합니다:
git push
-
선택 사항.
.git
폴더를 정리합니다:git reflog expire --expire-unreachable=now --all git gc --prune=now