Skip to main content

복제 오류 문제 해결

리포지토리를 복제하는 데 문제가 있는 경우 다음의 일반적인 오류를 확인합니다.

HTTPS 복제 오류

Git에서 HTTPS를 사용하는 경우 몇 가지 일반적인 오류가 있습니다. 이러한 오류는 일반적으로 이전 버전의 Git이 있거나 리포지토리에 액세스할 수 없음을 나타냅니다.

수신할 수 있는 HTTPS 오류의 예는 다음과 같습니다.

> error: The requested URL returned error: 401 while accessing
> https://github.com/USER/REPO.git/info/refs?service=git-receive-pack
> fatal: HTTP request failed
> Error: The requested URL returned error: 403 while accessing
> https://github.com/USER/REPO.git/info/refs
> fatal: HTTP request failed
> Error: https://github.com/USER/REPO.git/info/refs not found: did you run git
> update-server-info on the server?

Git 버전 확인

GitHub Enterprise Cloud와(과) 상호 작용하는 데 필요한 최소 Git 버전은 없지만, 버전 1.7.10은 많은 플랫폼에서 사용할 수 있는 편안한 안정적인 버전으로 확인되었습니다. 항상 Git 웹 사이트에서 최신 버전을 다운로드할 수 있습니다.

원격이 올바른지 확인

페치하려는 리포지토리는 GitHub.com에 있어야 합니다.

명령줄을 열고 git remote -v를 입력하여 로컬 리포지토리의 URL을 찾을 수 있습니다.

$ git remote -v
# View existing remotes
> origin  https://github.com/ghost/cocoareactive.git (fetch)
> origin  https://github.com/ghost/cocoareactive.git (push)

$ git remote set-url origin https://github.com/ghost/ReactiveCocoa.git
# Change the 'origin' remote's URL

$ git remote -v
# Verify new remote URL
> origin  https://github.com/ghost/ReactiveCocoa.git (fetch)
> origin  https://github.com/ghost/ReactiveCocoa.git (push)

또는 GitHub Desktop 애플리케이션을 통해 URL을 변경할 수 있습니다.

액세스 토큰 제공

GitHub에 액세스하려면 암호 대신 personal access token(으)로 인증해야 합니다. 자세한 내용은 개인용 액세스 토큰 관리을(를) 참조하세요.

SAML SSO를 사용하는 조직에 액세스하고 personal access token (classic)을 사용하는 경우 인증하기 전에 personal access token에 액세스할 수 있도록 권한을 부여해야 합니다. 자세한 내용은 "SAML Single Sign-On을 사용한 인증 정보" 및 "SAML Single Sign-On에 사용할 개인용 액세스 토큰 권한 부여"을(를) 참조하세요.

권한 확인

사용자 이름 및 암호를 묻는 메시지가 표시되면 리포지토리에 대한 액세스 권한이 있는 계정을 사용해야 합니다.

Tip

원격 리포지토리와 상호 작용을 할 때마다 자격 증명을 입력하지 않으려면 자격 증명 캐싱을 설정할 수 있습니다. 자격 증명 캐싱을 이미 사용하고 있는 경우 컴퓨터에 올바른 자격 증명이 캐시되어 있는지 확인하세요. 올바르지 않거나 오래된 자격 증명으로 인해 인증이 실패합니다.

대신 SSH 사용

이전에 SSH 키를 설정한 경우 HTTPS 대신 SSH 복제 URL을 사용할 수 있습니다. 자세한 내용은 원격 리포지토리 정보을(를) 참조하세요.

오류: 리포지토리를 찾을 수 없음

리포지토리를 복제할 때 이 오류가 표시되면 리포지토리가 없거나 액세스 권한이 없음을 의미합니다. 원인에 따라 이 오류에 대한 몇 가지 해결 방법이 있습니다.

맞춤법 검사 수행

오타가 발생합니다. git@github.com:owner/repotile.git 복제를 시도했지만 리포지토리의 이름이 실제로 owner/repoti1e인 경우 이 오류가 발생합니다.

이 오류를 방지하려면 복제할 때 항상 리포지토리 페이지에서 복제 URL을 복사하여 붙여넣습니다. 자세한 내용은 리포지토리 복제을(를) 참조하세요.

기존 리포지토리에서 원격을 업데이트하려면 원격 리포지토리 관리을(를) 참조하세요.

사용 권한 확인

프라이빗 리포지토리를 복제하려고 하지만 리포지토리를 볼 수 있는 권한이 없는 경우 이 오류가 발생합니다.

다음 방법 중 하나로 리포지토리에 액세스할 수 있는지 확인합니다.

  • 리포지토리의 소유자
  • 리포지토리의 협력자
  • 리포지토리에 액세스할 수 있는 팀의 구성원(리포지토리가 조직에 속한 경우)

SSH 액세스 확인

드문 경우지만 리포지토리에 대한 적절한 SSH 액세스 권한이 없을 수 있습니다.

사용 중인 SSH 키가 GitHub Enterprise Cloud의 개인 계정에 연결되어 있는지 확인해야 합니다. 명령줄에 다음을 입력하여 이를 확인할 수 있습니다.

$ ssh -T git@github.com
> Hi USERNAME! You've successfully authenticated, but GitHub does not
> provide shell access.

리포지토리가 조직에 속하고 OAuth app에서 생성된 SSH 키를 사용하는 경우 OAuth app 액세스가 조직 소유자에 의해 제한되었을 수 있습니다. 자세한 내용은 OAuth 앱 액세스 제한 정보을(를) 참조하세요.

자세한 내용은 GitHub 계정에 새 SSH 키 추가를 참조하세요.

리포지토리가 실제로 존재하는지 확인

다른 모든 작업이 실패하는 경우 GitHub.com에 리포지토리가 실제로 있는지 확인합니다. 존재하지 않는 리포지토리로 푸시하려는 경우 이 오류가 발생합니다.

오류: 원격 HEAD가 존재하지 않는 참조를 참조하여 체크 아웃할 수 없음

이 오류는 GitHub.com에서 리포지토리의 기본 분기가 삭제된 경우에 발생합니다.

이 오류를 검색하는 것은 간단합니다. 리포지토리를 복제하려고 하면 Git에서 경고합니다.

$ git clone https://github.com/USER/REPO.git
# Clone a repo
> Cloning into 'repo'...
> remote: Counting objects: 66179, done.
> remote: Compressing objects: 100% (15587/15587), done.
> remote: Total 66179 (delta 46985), reused 65596 (delta 46402)
> Receiving objects: 100% (66179/66179), 51.66 MiB | 667 KiB/s, done.
> Resolving deltas: 100% (46985/46985), done.
> warning: remote HEAD refers to nonexistent ref, unable to checkout.

오류를 해결하려면 GitHub.com에서 리포지토리의 관리자여야 합니다. 리포지토리의 기본 분기를 변경합니다.

그런 다음, 명령줄에서 사용 가능한 모든 분기 목록을 가져올 수 있습니다.

$ git branch -a
# Lists ALL the branches
>   remotes/origin/awesome
>   remotes/origin/more-work
>   remotes/origin/new-main

그런 다음, 새 분기로 전환할 수 있습니다.

$ git checkout new-main
# Create and checkout a tracking branch
> Branch new-main set up to track remote branch new-main from origin.
> Switched to a new branch 'new-main'