git remote
SVN은 단일 중앙 리포지토리를 사용하여 개발자들의 커뮤니케이션 허브 역할을 하며 개발자의 작업 복사본과 중앙 리포지토리 간에 변경 집합을 전달하여 공동 작업이 이루어집니다. 자체적인 로컬 기록 및 브랜치 구조를 갖춘 리포지토리의 복사본을 모든 개발자에게 제공하는 Git의 분산된 공동 작업 모델과는 다릅니다. 사용자는 일반적으로 하나의 변경 집합이 아니라 일련의 커밋을 공유해야 합니다. 작업 복사본에서 중앙 리포지토리로 변경 집합을 커밋하는 대신 Git을 사용하면 여러 리포지토리 사이에서 전체 브랜치를 공유할 수 있습니다.
git remote
git remote
명령으로 다른 리포지토리에 대한 연결을 만들고 보고 삭제할 수 있습니다. 원격 연결은 다른 리포지토리로 직접 연결되는 링크라기보다는 책갈피에 가깝습니다. 다른 리포지토리에 대한 실시간 액세스를 제공하는 대신 다소 번거로운 URL을 참조하는 데 사용할 수 있는 편리한 이름입니다.
예를 들어, 다음 다이어그램은 사용자의 리포지토리에서 중앙 리포지토리 그리고 다른 개발자의 리포지토리로의 원격 연결 두 개를 보여줍니다. 연결을 전체 URL로 참조하는 대신 origin과 John 바로 가기를 다른 Git 명령에 전달할 수 있습니다.
관련 자료
고급 Git 로그
솔루션 보기
Bitbucket Cloud에서 Git에 대해 알아보기
Git remote 사용 개요
git remote
명령은 기본적으로 리포지토리의 ./.git/config
파일에 저장된 원격 항목 목록을 관리하는 인터페이스입니다. 다음 명령은 원격 목록의 현재 상태를 보는 데 사용됩니다.
git remote 구성 보기
git remote
다른 리포지토리로의 원격 연결을 나열합니다.
git remote -v
위의 명령과 동일하지만 각 연결의 URL을 포함합니다.
git remote 구성을 만들고 수정
git remote
명령은 리포지토리의 ./.git/config
파일을 수정하는 편리하고 '도움이 되는' 방법이기도 합니다. 아래에 제시된 명령으로 다른 리포지토리와의 연결을 관리할 수 있습니다. 다음 명령은 리포지토리의 /.git/config
파일을 수정합니다. 텍스트 편집기로 ./.git/config
파일을 직접 편집하여 다음 명령의 결과를 얻을 수도 있습니다.
git remote add <name> <url>
원격 리포지토리로의 새 연결을 만듭니다. 원격을 추가한 후에는 다른 Git 명령에서 <url>
의 편리한 바로 가기로 <name>
을 사용할 수 있습니다.
git remote rm <name>
<name>
이라는 원격 리포지토리와의 연결을 제거합니다.
git remote rename <old-name> <new-name>
원격 연결의 이름을 <old-name>
에서 <new-name>
으로 변경합니다.
Git remote 설명
Git은 각 개발자에게 완전히 격리된 개발 환경을 제공하도록 설계되었습니다. 이는 정보가 리포지토리 간에 앞뒤로 자동 전달되지 않음을 의미합니다. 대신 개발자는 수동으로 업스트림 커밋을 로컬 리포지토리에 가져오거나 수동으로 로컬 커밋을 다시 중앙 리포지토리에 푸시해야 합니다. git 원격
명령은 이러한 "공유" 명령에 URL을 전달하는 더욱 쉬운 방법입니다.
origin 원격 리포지토리
git clone
으로 리포지토리를 복제하면 복제된 리포지토리를 가리키는 origin이라는 원격 연결이 자동으로 만들어집니다. 업스트림 변경 사항을 풀하거나 로컬 커밋을 게시하는 쉬운 방법을 제공하기 때문에 중앙 리포지토리의 로컬 복사본을 만드는 개발자들에게 유용합니다. 이 동작은 대부분의 Git 기반 프로젝트에서 중앙 리포지토리를 origin이라고 부르는 이유이기도 합니다.
리포지토리 URL
Git은 원격 리포지토리를 참조하는 다양한 방법을 지원합니다. 원격 리포지토리에 액세스하는 가장 쉬운 두 가지 방법은 HTTP와 SSH 프로토콜을 사용하는 것입니다. HTTP는 리포지토리에 대한 익명의 읽기 전용 액세스를 허용하는 쉬운 방법입니다. 예를 들면 다음과 같습니다.
http://host/path/to/repo.git
하지만 일반적으로 커밋을 HTTP 주소로 푸시하는 것은 불가능합니다(익명 푸시는 허용하고 싶지 않으실 것입니다). 읽기-쓰기 액세스의 경우 SSH를 대신 사용해야 합니다.
ssh://user@host/path/to/repo.git
호스트 컴퓨터에 유효한 SSH 계정이 필요할 것입니다. 그 외에 Git에서는 SSH를 통해 즉시 사용할 수 있는 인증 액세스를 지원합니다. URL은 Bitbucket.com과 같은 최신 보안 타사 호스팅 솔루션에서 제공합니다.
Git remote 명령
git remote
명령은 '하위 명령'을 추가로 사용하는 여러 Git 명령 중 하나입니다. 일반적으로 사용되는 git remote
하위 명령의 예는 다음과 같습니다.
ADD <NAME> <URL>
./.git/config
에 리포지토리 URL <url>
에서 <name>
이라는 이름의 원격 리포지토리에 대한 레코드를 추가합니다.
원격 레코드가 만들어진 후 즉시 git fetch
을 실행할 -f
옵션을 수락합니다.
즉시 git fetch
을 실행하고 원격 리포지토리의 모든 태그를 가져올 --tags
옵션을 수락합니다.
RENAME <OLD> <NEW>
레코드 이름을 <OLD>
에서 <NEW>
로 변경하도록 ./.git/config
를 업데이트합니다. 원격 리포지토리의 원격 추적 브랜치와 구성 설정 모두 업데이트됩니다.
REMOVE or RM <NAME>
./.git/config
를 수정하고 <NAME>
이라는 원격 리포지토리를 제거합니다. 원격 리포지토리의 원격 추적 브랜치와 구성 설정 모두 제거됩니다.
GET-URL <NAME>
원격 레코드의 URL을 출력합니다.
--push
를 수락합니다. URL을 가져오는 대신 푸시 URL이 쿼리됩니다.
--all
을 사용하면 원격 리포지토리의 모든 URL이 나열됩니다.
SHOW <NAME>
원격 <NAME>
에 대한 간략한 정보를 출력합니다.
PRUNE <NAME>
원격 리포지토리에 없는 <NAME>
에 대한 로컬 브랜치를 모두 삭제합니다.
정리하도록 설정된 브랜치를 나열하는 --dry-run
옵션을 수락하지만 실제로 정리하지는 않습니다.
Git remote 예시
origin 외에도 팀원의 리포지토리에 연결하면 편리한 경우가 많습니다. 예를 들어, 동료인 John이 dev.example.com/john.git
에 공개적으로 액세스할 수 있는 리포지토리를 유지하는 경우 다음과 같이 연결을 추가할 수 있습니다.
git remote add john http://dev.example.com/john.git
개별 개발자의 리포지토리에 대해 이러한 액세스 권한이 있으면 중앙 리포지토리 외부에서 공동 작업할 수 있습니다. 대규모 프로젝트에 대해 작업하는 소규모 팀에게 매우 유용합니다.
원격 리포지토리 보여주기
기본적으로 git remote
명령은 다른 리포지토리에 대해 이전에 저장한 원격 연결을 나열합니다. 이렇게 하면 원격 리포지토리의 "책갈피" 이름이 나열된 한 줄의 출력이 생성됩니다.
$ git remote
origin
upstream
other_users_repo
-v
옵션으로 git remote
를 호출하면 책갈피에 추가된 리포지토리 이름의 목록과 해당 리포지토리 URL이 추가로 나열됩니다. -v
옵션은 "verbose"(세부 정보)를 의미합니다. 세부 정보 git remote
출력의 예시는 아래와 같습니다.
git remote -v
origin git@bitbucket.com:origin_user/reponame.git (fetch)
origin git@bitbucket.com:origin_user/reponame.git (push)
upstream https://bitbucket.com/upstream_user/reponame.git (fetch)
upstream https://bitbucket.com/upstream_user/reponame.git (push)
other_users_repo https://bitbucket.com/other_users_repo/reponame (fetch)
other_users_repo https://bitbucket.com/other_users_repo/reponame (push)
원격 리포지토리 추가
git remote add
명령은 원격 리포지토리에 새 연결 레코드를 만듭니다. 원격을 추가한 후에는 다른 Git 명령에서 <url>의 편리한 바로 가기로 <name>을 사용할 수 있습니다. 허용되는 URL 구문에 대한 자세한 내용은 아래의 "리포지토리 URL" 섹션을 참조하세요. 이 명령은 리포지토리의 ./.git/config
내에 새 레코드를 만듭니다. 구성 파일 업데이트의 예는 다음과 같습니다.
$ git remote add fake_test https://bitbucket.com/upstream_user/reponame.git; [remote "remote_test"]
url = https://bitbucket.com/upstream_user/reponame.git
fetch = +refs/heads/*:refs/remotes/remote_test/*
원격 리포지토리 검사
git remote
에 show 하위 명령을 추가하여 원격 리포지토리의 구성에 대한 세부 출력을 제공할 수 있습니다. 이 출력에는 원격 리포지토리와 관련된 브랜치 목록과 가져오기 및 푸시를 위해 연결된 엔드포인트도 포함됩니다.
git remote show upstream
* remote upstream
Fetch URL: https://bitbucket.com/upstream_user/reponame.git
Push URL: https://bitbucket.com/upstream_user/reponame.git
HEAD branch: main
Remote branches:
main tracked
simd-deprecated tracked
tutorial tracked
Local ref configured for 'git push':
main pushes to main (fast-forwardable)
Git 원격 리포지토리에서 가져오기 및 풀링(pulling)
Git 원격 리포지토리로 푸시
git push
명령은 원격 리포지토리에 쓰는 데 사용합니다.
git push <remote-name> <branch-name>
이 예시에서는 <branch-name>
의 로컬 상태를 <remote-name>
에 의해 지정된 원격 리포지토리에 업로드합니다.
이름 변경 및 원격 리포지토리 제거
git remote rename <old-name> <new-name>
git remote
이름 변경 명령은 매우 간단합니다. 명령을 실행하면 원격 연결 이름이 <old-name>
에서 <new-name>
으로 변경됩니다. 또한 ./.git/config
의 콘텐츠가 수정되어 원격 리포지토리의 레코드 이름이 변경됩니다.
git remote rm <name>
git remote rm
명령은 <name>
매개 변수에 의해 지정된 원격 리포지토리로의 연결을 제거합니다. 이 부분을 설명하기 위해 이전 예시의 원격 리포지토리 추가를 '실행 취소'해 보겠습니다. git remote rm remote_test
를 실행하고 ./.git/config
의 콘텐츠를 살펴보면 [remote "remote_test"]
레코드가 더 이상 없다는 것을 알 수 있습니다.
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.