숏컷 코드
git remote -v
git remote add origin <url>
git remote get-url origin
git remote set-url origin <new-url>
git remote rename origin upstream
git remote remove old-originremote 구조
remote는 원격 저장소 별칭과 URL 설정이다
Git에서 origin은 특별한 저장소가 아니라 remote 이름입니다. clone하면 보통 원본 저장소 URL이 origin이라는 이름으로 등록되고, git fetch origin, git push origin main 같은 명령이 이 설정을 사용합니다. remote 설정에는 fetch URL, push URL, 추적할 branch refspec, 기본 HEAD 같은 정보가 연결됩니다.
git remote -v는 등록된 remote와 URL을 빠르게 보여 줍니다. 같은 remote에 fetch와 push URL이 다르게 잡혀 있으면 출력에 (fetch), (push)가 각각 표시됩니다. 회사 저장소에서 읽기는 HTTPS로, 쓰기는 SSH로 하거나, fork 기반 협업에서 origin은 내 fork, upstream은 원본 프로젝트로 나누는 흐름에서 이 구분이 중요합니다.
git remote -v
# origin git@github.com:me/project.git (fetch)
# origin git@github.com:me/project.git (push)
# upstream https://github.com/org/project.git (fetch)
# upstream https://github.com/org/project.git (push)set-url은 저장소를 옮길 때 가장 먼저 확인할 명령이다
원격 저장소가 GitHub 조직 이동, 프로토콜 변경, fork 교체로 바뀌면 local clone을 다시 만들 필요 없이 git remote set-url로 URL만 바꿀 수 있습니다. 이때 기존 브랜치와 커밋은 그대로 남고, 이후 fetch/push 대상만 바뀝니다.
git remote get-url origin
git remote set-url origin git@github.com:org/project.git
git fetch origin
git branch -vvURL을 바꾼 뒤에는 바로 push하지 말고 git fetch origin과 git branch -vv로 원격 추적 상태를 확인합니다. 이름은 같은 origin/main이라도 실제 서버가 바뀌면 다른 히스토리를 가리킬 수 있습니다. 특히 저장소를 새로 만들고 기존 clone을 연결하는 경우에는 첫 push 전에 git log --oneline --decorate --graph --all로 히스토리 관계를 확인하는 편이 안전합니다.
운영 기준
| 상황 | 적합한 명령 |
|---|---|
| remote 목록과 URL 확인 | git remote -v |
| URL 하나만 확인 | git remote get-url origin |
| origin URL 변경 | git remote set-url origin <url> |
| 원본 프로젝트를 별도 remote로 추가 | git remote add upstream <url> |
| remote 이름 정리 | git remote rename <old> <new> |
| 더 이상 쓰지 않는 remote 제거 | git remote remove <name> |
fork 협업에서는 이름을 명확히 나누는 것이 중요합니다. 보통 origin은 내가 push할 수 있는 fork, upstream은 원본 저장소로 둡니다. 반대로 회사 내부 단일 저장소라면 origin만 유지하고, 임시 테스트 remote는 작업이 끝난 뒤 제거하는 편이 혼란이 적습니다.
주의할 점
remote URL 변경은 로컬 커밋을 바꾸지 않지만, 이후 fetch와 push 대상은 바꿉니다. 조직 이동이나 fork 교체 후에는
git fetch, git branch -vv, git remote -v를 확인한 뒤 push해야 엉뚱한 저장소에 브랜치를 올리는 실수를 줄일 수 있습니다.
실패 예시
- fork에서 작업 중인데 origin이 원본 저장소를 가리키는 상태로 push함
- HTTPS에서 SSH로 바꾼 뒤 인증 확인 없이 배포 브랜치 push를 시도함
- old remote를 지우지 않아 fetch 결과에서 오래된 branch를 최신으로 착각함참고 링크
1 sources