- 오류: 저장소 또는 개체를 찾을 수 없음
- 무효한 상태
<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 지원이 비활성화되어 있습니다. 서버에서 Git LFS가 비활성화된 이유에 대해 GitLab 관리자에게 문의하세요. Git LFS 지원을 사용하도록 설정하는 방법은 LFS 관리 문서를 참조하세요.
- GitLab 서버에서 지원하지 않는 Git LFS 클라이언트 버전을 사용하고 있습니다. 다음을 확인해야 합니다:
-
git lfs version
으로 Git LFS 버전을 확인합니다. -
git lfs -l
로 프로젝트의 Git 설정을 확인합니다. 설정이batch = false
로 되어 있다면 해당 줄을 제거하고, Git LFS 클라이언트를 업데이트하세요. GitLab은 1.0.1 버전 이상만 지원합니다.
-
개체를 푸시할 때 항상 자격 증명이 필요합니다
Git LFS는 모든 개체를 푸시할 때마다 사용자를 HTTP 기본 인증으로 인증하므로 사용자 HTTPS 자격 증명이 필요합니다. 기본적으로 Git은 사용하는 각 저장소에 대해 자격 증명을 기억합니다. 자세한 내용은 공식 Git 문서를 참조하세요.
예를 들어, Git에게 특정 시간 동안 자격 증명을 기억하도록 지시할 수 있습니다. 다음 예시는 1시간(3600초) 동안 자격 증명을 기억하며, 1시간 후에 다시 인증해야 합니다.
git config --global credential.helper 'cache --timeout=3600'
자격 증명을 저장하고 암호화하는 방법은 다음과 같습니다:
- MacOS:
osxkeychain
사용 - Windows:
wincred
또는 Microsoft의 Git Credential Manager for Windows 사용
사용자 자격 증명을 저장하는 자세한 내용은 Git 자격 증명 저장소 문서를 참조하세요.
LFS 개체가 푸시될 때 누락됨
GitLab은 LFS 포인터를 감지하기 위해 푸시 시 파일을 확인합니다. LFS 포인터가 감지되면 GitLab은 해당 파일이 LFS에 이미 존재하는지 확인합니다. 별도의 Git LFS 서버를 사용하고 이 문제가 발생하는 경우:
- 로컬에 Git LFS가 설치되어 있는지 확인합니다.
-
git lfs push --all
과 같은 수동 푸시를 고려하세요.
Git LFS 파일을 GitLab 외부에 저장하는 경우, 프로젝트에서 Git LFS를 사용 안 함으로 설정할 수 있습니다.
LFS 개체를 외부로 호스팅
사용자 정의 LFS URL을 설정하여 LFS 개체를 외부에 호스팅할 수 있습니다.
git config -f .lfsconfig lfs.url https://example.com/<project>.git/info/lfs
이렇게 하는 이유는 LFS 데이터를 Nexus Repository 같은 장치에 저장하는 경우입니다. 외부 LFS 저장소를 사용하는 경우, GitLab은 LFS 개체를 확인할 수 없습니다. 따라서 GitLab LFS 지원이 활성화된 경우 푸시가 실패합니다.
푸시 실패를 방지하려면 프로젝트 설정에서 Git LFS 지원을 사용 안 함으로 설정할 수 있습니다. 그러나 이 방법은 GitLab 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