git remote 명령어 | 추가, 확인, 삭제, 이름 변경, 주소 변경, 프로토콜 소개
이번 포스팅은 git remote
명령어를 이용해, 원격 리포지토리 추가, 확인, 삭제 그리고 이름 및 url 주소 변경 방법에 대해 다룹니다. 혼자 사용하는 git도 충분히 값어치 있지만, 여럿이 함께 사용할 때 비로소 Git의 진가를 100% 발휘할 수 있습니다. 그 시작점이 되는 git remote 명령어에 대해 알아봅시다.
1. git remote add: 새 원격 repo 추가 / 등록 / 연결
처음 git init 명령어를 이용해 로컬 리포지토리를 생성하면, 연결되어 있는 원격 리포지토리는 하나도 없는 상태입니다. 모든 연결된 원격 repo 목록을 보여주는 아래 명령어를 입력하면 출력되는 내용이 없을 것입니다.
$ git remote
로컬 환경에 있는 내 소스 코드를 다른 팀원과 공유하기 위해선 원격 repo에 연결해주어야 합니다. 원격 repo는 직접 서버를 구성할 수도, Github이나 Bitbucket 같은 서비스를 사용할 수도 있습니다.
어떤 방식이든, 어떤 통신 프로토콜을 이용하든 원격 repo는 .git
으로 끝나는 주소를 갖고 있습니다. 이 주소를 아래 명령어에 사용해서 새 원격 repo를 추가합니다.
이 때, 메인 repo 역할을 하는 원격 repo 라면 origin
이라는 이름으로 추가하는 것이 오래된 컨벤션입니다.
따라서, 다음과 같은 명령어를 입력합니다.
$ git remote add origin [url]
실제 실행 결과는 다음과 같습니다.
git remote add
명령어는 별도의 메시지 출력 없이 완료됩니다. 입력 후 git remote
명령어로 확인하면 origin
이라는 이름을 목록에서 확인할 수 있습니다.
add
명령어와 자주 사용하는 옵션은 -f
입니다. 이 옵션을 붙여주면 원격 repo 추가 후에 자동으로 새로 추가한 repo의 모든 브랜치의 데이터를 fetch합니다.
혹시 remote origin already exists
라는 에러 메시지가 출력된다면, 이미 origin
이라는 이름에 연결된 원격 repo가 있다는 의미이니 확인 후, 이름 변경 훅은 삭제 등의 방법을 사용하시기 바랍니다. 각각의 방법은 아래 섹션들에서 확인가능합니다.
2. git remote -v: 원격 repo 이름과 url 주소 확인
git remot
e 명령어는 -v (--verbose)
옵션을 가지고 있습니다. 이 옵션을 사용하면 연결된 원격 repo 목록에 더 자세한 정보를 출력할 수 있습니다.
$ git remote -v
원격 repo를 하나 더 추가한 후 명령어를 실행한 화면입니다.
목록에 이름과 함께 url 주소도 출력되고 있습니다. 또한, 같은 이름이라도 fetch
, push
2가지 용도로 나뉘어서 같은 주소가 2번 출력되는 걸 볼 수 있는데, 경우에 따라 2가지 용도의 url이 다를 가능성도 있기 때문입니다.
주로, 특정 repo를 읽기 전용으로 만들어 push 주소를 막는 경우, 서로 다른 통신 프로토콜을 쓰는 경우 등에 서로 다른 주소를 사용합니다.
각각의 주소를 따로 설정하는 방법은 아래 섹션 5 에서 알아보겠습니다.
3. git remote remove: 원격 repo 삭제
다음은 설정한 원격 repo와의 연결을 삭제하는 방법입니다. 다음 명령어를 입력하면 됩니다.
$ git remote remove [name]
혹은
$ git remote rm [name]
원격 repo를 삭제하면 이와 관련한 모든 브랜치와 설정 역시 함께 제거됩니다. 실행 화면은 다음과 같습니다.
4. git remote rename: 원격 repo 이름 변경
다음은, 원격 repo에 설정한 이름을 변경하는 방법입니다. 아래의 명령어를 입력하여 변경할 수 있습니다.
$ git remote rename [old_name] [new_name]
원격 repo의 이름을 변경하면, 이와 관련한 모든 브랜치와 설정 역시 함께 갱신됩니다. 실행 화면을 보겠습니다.
origin
이었던 이름이 onion
으로 변경되었습니다.
5. git remote set-url: 원격 repo url 주소 변경
다음은, 특정 이름에 설정된 url 주소를 변경하는 명령어입니다. 다음 명령어를 사용합니다.
$ git remote set-url [name] [new_url]
이 명령어는 기본적으로 fetch
, push
주소를 모두 변경합니다. 그러나 --push
옵션을 주면 push url 만 변경할 수 있습니다.
$ git remote set-url --push [name] [new_push_url]
한 번 push url 을 변경하면 --push
옵션이 없는 명령어는 fetch url 주소만 변경합니다. 실행 결과에서 url 주소가 변경된 과정을 확인해보세요.
6. 원격 repo로 사용되는 4가지 프로토콜 소개
Git은 원격 repo와의 통신하는 다양한 프로토콜을 지원합니다. 그 중 대표적인 4가지를 소개해보겠습니다.
6.1. local
만약 git repo가 같은 시스템 내에 있다면 파일시스템을 사용해서 해당 repo에 접근할 수 있습니다. 주로, 테스팅이나 로컬 백업을 다룰 때 사용할 수 있습니다.
주소 예시는 다음과 같습니다.
$ git remote add local_repo file:///path/to/local/repo.git
6.2. HTTP/HTTPS
HTTP(S)는 가장 대중적이고 별도의 세팅이 필요 없기 때문에 Git 호스팅 서비스에서 널리 사용되고 있는 통신 프로토콜입니다. 방화벽이나 프록시와 같은 설정에도 잘 맞으며, 특히 HTTPS의 경우에 암호화 지원을 통한 데이터 보안 상의 이점도 누릴 수 있습니다.
주소 예시는 다음과 같습니다.
$ git remote add remote_repo https://example.com/user/repo.git
6.3. SSH
SSH 역시 공개키와 개인키를 통한 암호화를 지원하면서도, HTTP(S) 이상의 속도를 낼 수 있어서 많이 사용되는 통신 프로토콜 중 하나입니다. Git에 처음 세팅하는 과정은 HTTP(S)보다 복잡하지만, 대규모 리포지토리에서 성능적인 이점을 누릴 수 있습니다. 이 때문에 대부분의 Git 호스팅 서비스에서 지원하고 있습니다.
주소 예시는 다음과 같습니다.
$ git remote add remote_repo ssh://user@example.com:/path/to/repo.git
6.4 Git
Git은 TCP 위에서 이루어지는 자체적인 Git 프로토콜을 지원합니다. 이 프로토콜은 따로 사용자 인증이나 암호화를 거치지 않습니다. 따라서, Git을 포함한 대부분의 오픈소스 프로젝트에서 읽기 전용으로 배포할 때 주로 사용됩니다.
주소 예시는 다음과 갈습니다.
$ git remote add remote_repo git://user@example.com:/path/to/repo.git
7. 마치며
이번 포스팅은 Git을 통한 협업의 시작점이 되는 git remote
명령어에 대한 거의 모든 것을 다뤄보았습니다. git remote
명령어는 결국 로컬 Git 환경과 연결된 모든 원격 repo를 관리하는 기능을 하며,
git clone, git branch, git push
, git pull 등 원격 repo와 관련한 대부분의 명령어와 함께 사용됩니다.
특히, 프로젝트의 규모가 커지고 섬세한 관리가 필요해지면 원격 repo 관리 또한 세심하게 이루어져야 할 부분입니다. 이번 포스팅이 원격 repo 관리를 위한 좋은 출발점이 되길 바랍니다.