기술 · 실용 가이드
Git ‘remote origin already exists’: 변경 전에 기존 URL을 읽으세요
이 오류는 로컬 이름 origin이 이미 있다는 사실만 증명합니다. fetch, push, tracking 역할을 확인한 뒤 유지·변경·이름 변경·추가를 선택하세요.

로컬 이름 충돌 때문에 .git을 삭제하거나 force-push하지 마세요. 모든 URL과 origin의 의도를 먼저 기록합니다.
repository와 모든 URL을 기록한다
root, 현재 branch, git remote -v, origin의 모든 fetch와 push URL을 기록합니다. 여러 URL을 놓치지 않도록 get-url --all과 push 형식을 사용하세요.
origin의 역할을 한 문장으로 정한다
현재 협업 remote 유지, 새 대상으로 이동, 기존 remote를 upstream으로 보존, 별도 게시 remote 추가 중 하나를 선택합니다. 오류 자체는 선택하지 않습니다.
한 가지 변경을 선택한다
URL이 맞으면 유지하고 같은 역할의 이동은 set-url, 기존 역할이 필요하면 rename, fetch와 게시가 다르면 새 remote를 추가합니다. 한 remote의 fetch/push는 같은 장소를 가리켜야 합니다.
tracking과 기록을 보호한다
remote 제거는 로컬 설정 연결만 끊습니다. .git 삭제는 로컬 기록과 설정을 지웁니다. force-push는 ref 업데이트 문제이지 이름 충돌 해결이 아닙니다.
네트워크 쓰기 전에 검증한다
변경 뒤 모든 URL과 branch tracking을 다시 읽고 예상 이름으로 read-only fetch 또는 ls-remote를 실행합니다. 인증과 repository-not-found는 별도 문제입니다.
원래 workflow를 시험한다
원래 tutorial, push 또는 배포 명령을 반복해 의도한 repository가 ref를 받았는지 확인하고 rollback을 위해 이전 URL을 기록합니다.
