{
"author": "Dev.ian",
"createdAt": "2024-06-20",
"updatedAt": "2024-06-23"
}
회사의 gitlab 플랜을 변경하게 되면서 URL 도 함께 변경했다. 플랜 변경과 URL 변경은 관계가 없지만, 그동안 우리 팀의 repository 가 다른 팀의 repository 내에 있었다. 플랜 변경을 하면서 이번 기회에 Repository 구조도 바꾸게 되어 URL 까지 함께 바뀌게 되었다.
그러다보니 각자의 로컬에 있는 여러 프로젝트들의 Repository remote URL 을 모두 바꿔야만 했다. 간단하지만 처음 해보는 작업이라 정리해두려 한다.
가장 먼저 할 작업은 현재 설정되어 있는 상태를 확인하는 것이다. 각 프로젝트의 Git repository 의 Remote URL 이 무엇인지 확인한다.
git remote -v
$ git remote -v
origin git@gitlab.com:projects/sample1/ABCDE-service.git (fetch)
origin git@gitlab.com:projects/sample1/ABCDE-service.git (push)
비슷한 명령어로 git config --get remote.origin.url
가 있다. fetch, push 를 나눠서 보여주지 않고 단순히 현재 로컬 git config 에서 설정되어 있는 remote url 을 보여준다.
현재의 Repository remote url 을 확인했다면 새로 바뀐 URL 로 변경한다. (sample1 -> sample2)
git remote set-url ${REPOSITORY_ALIAS} ${REPOSITORY_NEW_URL}
# URL 변경
$ git remote set-url origin git@gitlab.com:projects/sample2/ABCDE-service.git
# URL 확인
$ git remote -v
origin git@gitlab.com:projects/sample2/ABCDE-service.git (fetch)
origin git@gitlab.com:projects/sample2/ABCDE-service.git (push)
set url 명령어로 URL 을 직접 바꾸는 방법 이외에 rename 이라는 명령어로 remote repository url 을 변경하는 방법도 있다. 다만 변경, 추가, 삭제 등의 과정이 늘어나 번거롭다.
git remote rename ${CURRENT_ALIAS} ${NEW_ALIAS}
git remote add origin ${REPOSITORY_NEW_URL}
git remote -v
git remote rm ${NEW_ALIAS}
# 1)
$ git remote rename origin old_origin
# 2)
$ git remote add origin git@gitlab.com:projects/sample2/ABCDE-service.git
# 3)
$ git remote -v
old_origin git@gitlab.com:projects/sample1/ABCDE-service.git (fetch)
old_origin git@gitlab.com:projects/sample1/ABCDE-service.git (push)
origin git@gitlab.com:projects/sample1/ABCDE-service.git (fetch)
origin git@gitlab.com:projects/sample1/ABCDE-service.git (push)
# 4)
$ git remote rm old_origin
rename
명령어로 repository 별칭(alias)이 아닌 URL 을 변경할 때, 아래와 같은 에러가 뜰 때가 있다. git remote rename ${OLD_URL} ${NEW_URL}
에서 OLD_URL 이 이미 없어진 경우 이러한 에러가 나올 수 있다.
이미 새로운 URL 로 Repository 이행이 끝난뒤에 진행했기에 이 에러가 나왔다. 이전 URL 은 더이상 존재하지 않는 URL 이다. 따라서 set-url
명령어를 사용하거나 etc 의 방법을 사용하여 완료했다.
# URL 변경: sample1 -> sample2
$ git remote rename git@gitlab.com:projects/sample1/ABCDE-service.git git@gitlab.com:projects/sample1/ABCDE-service.git
fatal: No such remote: 'git@gitlab.com:projects/sample1/ABCDE-service.git' # 이전 url 을 찾을 수 없다.