윈도우에서 git clone 명령어가 멈추는 문제 때문에 최근 고통을 좀 받았다. 이럴 때는, HTTPS로 먼저 받고, 나중에 SSH로 전환하는 방식이 가장 간편하다.
🔍 문제 상황
- SSH로 git clone 명령어를 써서 저장소 받아오는 도중에 멈추는 현상 발생
- Receiving objects: xx% 에서 다운로드가 중단됨
이럴 땐 HTTPS로 클론한 후 SSH로 변경하는 게 빠르고 확실하다. 이 과정에서 알아야 할 몇 가지 중요한 개념과 설정이 있다.
🛠️ 해결 방법
1️⃣ HTTPS로 리포지토리 클론
HTTPS로 먼저 리포지토리를 클론한다. SSH가 막혀있어도 HTTPS는 문제없이 작동한다.
# HTTPS로 리포지토리 클론
cd /d/git/1_project # 작업할 디렉터리로 이동
git clone https://github.com/example-repo/sample-project.git
이렇게 하면, sample-project 디렉터리에 리포지토리가 클론된다.
2️⃣ 원격 URL을 SSH로 변경
HTTPS로 받은 리포지토리의 원격 URL을 SSH로 변경한다. 이 작업을 통해 다음부터는 SSH 키로 인증하게 된다.
# 원격 URL 확인 (현재는 HTTPS URL로 설정되어 있을 것)
cd sample-project
git remote -v
출력 예시:
origin https://github.com/example-repo/sample-project.git (fetch)
origin https://github.com/example-repo/sample-project.git (push)
원격 URL을 SSH로 변경
git remote set-url origin git@github.com:example-repo/sample-project.git
다시 확인해보면, 이제 URL이 SSH로 바뀐 것을 볼 수 있다.
git remote -v
출력 예시:
origin git@github.com:example-repo/sample-project.git (fetch)
origin git@github.com:example-repo/sample-project.git (push)
이제 HTTPS에서 SSH로 전환 완료다.
3️⃣ SSH 에이전트에 SSH 키 추가
SSH 키를 에이전트에 추가해야 한다. 그래야 git push, git pull 명령이 SSH 키를 자동으로 사용할 수 있다.
# SSH 에이전트 시작
eval "$(ssh-agent -s)"
# SSH 키 추가
ssh-add ~/.ssh/id_ed25519
SSH 연결 테스트
ssh -T git@github.com
출력 예시:
Hi User! You've successfully authenticated, but GitHub does not provide shell access.
이 메시지가 보이면, SSH 인증이 성공한 것이다.
⚠️ 주의사항
- Credential Manager의 HTTPS 자격 증명 삭제
- Windows의 자격 증명 관리자(Credential Manager)에 github.com 자격 증명이 저장되어 있다면, 매번 비밀번호 입력 없이 HTTPS로 클론할 수 있다.
- 이 경우,
Credential Manager
에 저장된 자격 증명을 삭제해야 한다.
- SSH 키가 GitHub에 등록되어 있는지 확인
- GitHub의 Settings > SSH and GPG keys 페이지에서, id_ed25519.pub(또는 id_rsa.pub 등 키 생성 방식에 따라 선택)의 내용을 복사하여 등록해야 한다.
- 등록하지 않으면 Permission denied (publickey) 에러가 발생할 수 있다.
📘 명령어 요약
# 1️⃣ HTTPS로 리포지토리 클론
git clone https://github.com/example-repo/sample-project.git
# 2️⃣ 원격 URL을 SSH로 변경
git remote set-url origin git@github.com:example-repo/sample-project.git
# 3️⃣ SSH 에이전트에 SSH 키 추가
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
# 4️⃣ SSH 연결 테스트
ssh -T git@github.com
📢 결론
- HTTPS로 먼저 클론하고, SSH로 전환하는 방식이 가장 간단하고 확실하다.
- SSH로 클론이 안 될 때는 당황하지 말고, HTTPS로 받아서 SSH로 전환하면 된다.
- 이 과정이 끝나면, 더 이상 비밀번호를 입력하지 않아도 된다.
이제 git clone, git push, git pull 명령어가 SSH로 자동 인증될 것이다. 🎉
'노트정리 > 버전관리 version control' 카테고리의 다른 글
git log에 자동으로 그래프 표시하기 (0) | 2024.12.21 |
---|---|
윈도우에서 git clone 명령어가 멈출 때 해결법 (0) | 2024.10.25 |
포트리 키링 에러 (poetry keyring error) (0) | 2024.10.19 |
깃(git) 커밋 날짜 임의로 지정하고 푸시하기 (0) | 2024.09.17 |
내가 작성한 깃허브 지스트(github gist)에서 특정 키워드 검색 (0) | 2024.08.17 |
git bash 에서 conda activate 사용법 (0) | 2020.12.28 |