원격 저장소란?(Remote Repository)
원격 저장소란 내 로컬PC 저장소가 아닌 네트워크상의 다른 위치에 존재하는 Git 저장소를 말합니다. 여기서 네트워크상의 어딘가는 인터넷상일 수도 있고 우리팀의 사설 네트워크상의 위치일수도 있습니다.

물론 내 로컬 PC에 원격 저장소를 만들고 사용해도 되겠지만 그렇게 되면 원격 저장소를 사용하는 의미를 찾기 힘들것입니다. 원격 저장소의 가장 큰 목적은 저장소 공유를 통한 협업에 있기 때문입니다.

앞에서 말했듯이 원격 저장소는 여러 사람이 협업을 하기 위해 필요합니다. 원격 저장소는 여러개가 존재할 수 있으며, 저장소별로 읽거나 쓰기만 가능할 수 있고 둘 다 가능할 수도 있습니다. 여기서 원격 저장소에 데이터를 쓰는 것을 Push라고 하며, 가져오는 것을 Pull 이라고 합니다.



원격 저장소는 어디에?
Git의 원격 저장소는 네트워크상 어딘가에 존재한다고 했는데, 인터넷을 통해 원격 저장소 공간을 제공해주는 서비스들이 있습니다.

대표적인 원격 저장소 서비스로는 GitHub, GitLab 등이 있는데, 이런 Git 서비스들은 원격 저장소 공간을 인터넷 상에서 제공하며, 각각의 정책에 따라 공개 저장소와 비공개 저장소를 유료 또는 무료로 제공하고 있습니다.

또한 원격 저장소 서버는 사내 네트워크에 구축하여 보안을 유지하며 운용할 수 있지만 인프라 유지비용이 발생하는 문제가 발생하므로 앞에서 언급한 서비스들을 이용할 수도 있습니다. 이번 포스팅에서 원격 저장소 서비스에 대한 내용은 범위 밖에 있으므로, GitHub의 schacon 저장소를 예제로 사용하도록 하겠습니다.

만약 원격 저장소 서비스인 GitHub에 대해 알고싶거나 자신의 원격 저장소를 만들어 사용하고 싶은 경우 다음의 링크를 참조합니다.


(원격 저장소로부터 프로젝트를 복사하여 작업하고 작업 내용을 원격 저장소에 반영하여 여러 사용자가 협업한다.)



원격 저장소를 내 로컬 PC의 Git 저장소로 복사(Clone)하기
Git으로 프로젝트를 관리하는 경우 두 가지 프로세스가 있습니다. 첫 번째 프로세스는 프로젝트를 최초 시작하면서 내 로컬에 Git 저장소를 만들어 작업하다가 협업을 위해 원격 저장소를 만들고 작업 내역을 업로드 하는 것입니다. 두 번재 프로세스는 이미 진행중인 프로젝트에 참여하게 되는 경우인데 팀원들이 Git을 통해 프로젝트를 진행하고 있었다면 이미 원격 저장소가 만들어져 있을 것이므로 이것을 내 로컬 PC의 Git 저장소로 복사(Clone) 하는 경우입니다.

Git 저장소를 복사 하는 방법은 git clone 명령어에 원격 저장소 URL을 지정해서 사용하는 방법입니다.
$ cd c:
$ mkdir my_repo/  #저장소를 clone할 디렉터리 생성
$ cd my_repo
$ git clone https://github.com/schacon/ticgit  #원격 저장소 복사

만약 더욱 자세한 clone 과정이 궁금하면 아래 링크를 참조하시기 바랍니다.


원격 저장소 확인하기
git remote 명령어를 사용하면 현재 사용중인 Git 프로젝트에 연결된 원격 저장소를 확인할 수 있습니다. 연결된 원격 저장소의 단축이름(별칭) 을 보여줍니다. 방금 clone한 저장소에서 remote 명령으로 원격 저장소를 확인했는데 origin이 출력되었습니다. 원격 저장소를 clone한 경우 원격 저장소의 별칭은 자동으로 origin이 됩니다.
$ cd c:
$ mkdir my_repo/  #저장소를 clone할 디렉터리 생성
$ cd my_repo
$ git clone https://github.com/schacon/ticgit  #원격 저장소 복사
$ cd ticgit  #복사한 저장소에 접근
$ git remote  #원격 저장소 확인
origin


-v 옵션을 사용하면 저장소의 URL까지 볼 수 있습니다.
$ git remote -v
origin  https://github.com/schacon/ticgit (fetch)
origin  https://github.com/schacon/ticgit (push)




내 로컬 PC의 Git 저장소를 원격 저장소로 추가하기
만약 원격 저장소 없이 개인의 PC에서 Git저장소를 만들어 작업하다가 다른 팀원들이 프로젝트에 참여하게 된 경우 협업을 위해 원격 저장소가 필요하게 될 것이고 작업중이던 Git 저장소를 원격 저장소로 추가해야 할 것입니다. 원격 저장소에 연결하는 명령어는 git remote add [별칭] [원격 저장소 URL] 입니다.

원격 저장소는 이미 만들어져 있어야 하며 해당 저장소의 URL이 필요합니다. 저의 경우 GitHub 라는 원격 저장소 서비스에 원격 저장소를 만들어 두었으며, 원격 저장소를 만드는 것은 이 글의 범위 밖이므로 저와 같이 GitHub를 원격 저장소로 이용하는 경우 다음 글을 참조합니다. ->  [Git] GitHub란? GitHub 가입하기 


방금 막 생성한 따끈따끈한 원격 저장소가 있다는 가정하에 로컬 저장소에 Git 저장소를 만든 후 원격 저장소에 추가합니다. 저의 경우 방금 막 생성한 원격 저장소의 주소는 https://github.com/dololak/remoteTestRepo.git 입니다.

먼저 로컬에 Git 저장소 하나를 생성합니다. 저의 경우 원격 저장소 이름과 똑같이 맞춰 주었습니다. 강제는 아니지만 나중에 저장소가 여러개 되었을 때 헷갈림과 실수를 방지하기 위함입니다.
$ cd c:
$ mkdir remoteTestRepo
$ cd remoteTestRepo/
$ git init
Initialized empty Git repository in C:/remoteTestRepo/.git/


README.md 파일과 텍스트파일 하나를 생성합니다. README.md 파일은 원격 저장소가 인식하는 파일인데 나중에 원격 저장소에 추가하면 저장소 메인 페이지에 파일의 내용이 나타납니다. 텍스트 파일의 경우에는 원격 저장소에 연결했을때 파일들이 그대로 원격 저장소에 등록되는지를 알아보기 위한 파일입니다.
$ echo "테스트용 원격 저장소 입니다." >> README.md
$ echo "프로젝트 관련 파일." >> TextFile.txt


이제 파일을 커밋합니다. git log로 확인하니 커밋이 잘 이루어 졌습니다.
$ git add *
$ git commit -m '첫번째 커밋입니다.'

$ git log
commit eb2da45d33089938feb144fdff95402e55cc26a7 (HEAD -> master)
Author: dololak <todaerika@nate.com>
Date:   Thu May 17 23:22:24 2018 +0900

    첫번째 커밋입니다.



자 이제 진행중이던(?) 프로젝트 저장소를 원격 저장소에 연결해 보겠습니다. 별칭으로 origin을 사용했는데 자신이 알기 쉬운 이름을 사용해도 되지만 관례적으로 origin으로 사용합니다.
$ git remote add origin https://github.com/dololak/remoteTestRepo.git


방금 연결했다고 설명했는데, 말 그대로 연결입니다. 연결된 상태에서 내 저장소에 있는 파일들을 원격 저장소로 추가(전송) 하지 않은 것입니다. git remote 명령어로 연결이 됐는지 확인 가능합니다.
$ git remote -v
origin  https://github.com/dololak/remoteTestRepo.git (fetch)
origin  https://github.com/dololak/remoteTestRepo.git (push)


연결된 원격 저장소로 내 파일들과 커밋 내역을 추가(전송) 하는 방법은 git push 명령을 사용하는 것입니다.
git push [원격 저장소 별칭] [브랜치 이름] 형식으로 사용합니다.
$ git push origin master


원격 저장소의 내용을 추가하거나 삭제 수정하려면 권한이 필요합니다. GitHub의 경우 push할 때 다음과 같이 권한이 있는 계정을 필요로 합니다.



아이디와 비밀번호를 입력하니 전송이 진행되고 완료됩니다.
$ git push origin master
Counting objects: 4, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (4/4), 357 bytes | 357.00 KiB/s, done.
Total 4 (delta 0), reused 0 (delta 0)
To https://github.com/dololak/remoteTestRepo.git
 * [new branch]      master -> master


브라우저로 원격 저장소에 접속하니 저장소의 내용이 모두 추가된 것을 볼 수 있습니다.



출처 - https://git-scm.com/book/en/v2/Git-Basics-Working-with-Remotes

블로그 이미지

도로락

IT, 프로그래밍, 컴퓨터 활용 정보 등을 위한 블로그

,