문제 해결
SSH/HTTPS
SSH를 사용하여 원격 저장소에 연결할 때 "권한 거부됨(공개 키)" 오류
우선 다음 사항을 확인해야 합니다.
- URL이 정확합니까?
- 비밀 키가 로컬 시스템에 올바르게 구성되어 있습니까?
- 공개 키가 원격에 올바르게 구성되어 있습니까?
다음 명령을 실행하여 Backlog 원격 저장소에 해당하는 공개/비밀 키 구성을 확인할 수 있습니다.
$ ssh <space>@<space>.git.backlog.com
<space>
를 소유한 Backlog 공간으로 바꿉니다(예: 공간 demo.backlog.com
의 경우 demo@demo.git.backlog.com
이 됨)
설정이 올바르면 다음 출력이 표시됩니다. 오류 메시지가 표시되면 위의 단계를 반복하고 올바르게 수행하고 있는지 확인하십시오.
Hi yourname! You've successfully authenticated, but Backlog does not provide
shell access.
Connection to git.backlog.com closed.
HTTPS URL을 통해 원격 저장소를 복제할 수 없습니다.
이전 버전의 Git에서는 푸시 또는 풀을 실행할 때 때때로 문제가 발생할 수 있습니다. 최신 Git 버전 또는 v2 이상을 사용하는 것이 좋습니다. Source Tree 또는 TortoiseGit과 같은 Git 클라이언트를 사용하는 경우 해당 클라이언트와 함께 제공되는 Git 버전을 사용하십시오.
원격 저장소에 푸시/풀할 때마다 비밀번호를 묻는 메시지가 표시됩니다.
다음과 같이 설정하면 비밀번호를 여러 번 입력하는 것을 방지할 수 있습니다.
Windows
git-credential-winstore를 사용하면 처음 푸시/풀할 때만 비밀번호를 묻습니다.
Mac
Sourcetree(이전 장에서 다뤘던)를 사용하여 Mac 키체인과 연결할 수 있습니다. 이렇게 하면 Git이 풀 또는 푸시할 때마다 사용할 자격 증명을 파악할 수 있습니다.
콘솔
Mac에서는 Git의 자격 증명 API를 사용하여 사용자 이름/비밀번호를 Git 작업과 연결할 수 있습니다. Homebrew를 사용하는 경우 Git 자격 증명 API가 자동으로 설치됩니다. 그렇지 않으면 수동으로 설치해야 합니다.
아래 명령어로 자격 증명 API가 설치되어 있는지 확인할 수 있습니다.
$ git credential-osxkeychain
Usage: git credential-osxkeychain <get|store|erase>
자격 증명 API가 설치되지 않은 경우 아래 출력이 표시됩니다.
$ git credential-osxkeychain
git: 'credential-osxkeychain' is not a git command. See 'git --help'.
이 경우 다운로드하여 파일을 /usr/local/bin으로 이동할 수 있습니다.
$ curl -s -O http://github-media-downloads.s3.amazonaws.com/osx/git-credential-osxkeychain
$ chmod u+x git-credential-osxkeychain
$ mv git-credential-osxkeychain /usr/local/bin
설치가 완료되면 아래 명령어를 실행하여 자격 증명 API를 활성화합니다.
git config --global credential.helper osxkeychain
원격 저장소에 푸시된 변경 사항이 반영되지 않습니다.
푸시 실행 시 아래와 같은 메시지가 나타날 수 있습니다. 일반적으로 새 로컬 저장소에서 푸시할 때 발생합니다.
$ git push
No refs in common and none specified; doing nothing.
Perhaps you should specify a branch such as 'main'.
Everything up-to-date
푸시를 실행할 때 브랜치 이름을 생략하면 Git은 기본적으로 현재 변경 사항을 로컬 브랜치와 동일한 이름을 가진 원격 브랜치로 푸시하려고 한다고 가정합니다. 원격 저장소에 메인 브랜치가 아직 생성되지 않은 경우에 발생합니다. (로컬 메인 브랜치에서 푸시하고 있습니다.) 이 경우 푸시를 실행할 때 브랜치 이름을 명시적으로 사용해야 합니다.
$ git push -u origin main
이렇게 하면 원격 저장소에 메인 브랜치가 자동으로 생성됩니다. 다음에 푸시를 실행할 때 브랜치 이름을 생략할 수 있습니다.