Git remote repository
리모트 저장소를 관리할 줄 알아야 다른 사람과 함께 일할 수 있습니다.
리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말합니다.
저장소는 여러 개가 있을 수 있는데 어떤 저장소는 읽고 쓰기 모두 할 수 있고 어떤 저장소는 읽기 권한만 있을 수도 있습니다.
간단히 말해서 다른 사람들과 함께 일한다는 것은 리모트 저장소를 관리하면서 데이터를 거기에 Push하고 Pull하는 것입니다.
리모트 저장소를 관리한다는 것은 저장소를 추가, 삭제하는 것뿐만 아니라 브랜치를 관리하고 추적할지 말지 등을 관리하는 것을 말합니다.
이번에는 리모트 저장소를 관리하는 방법에 대해 알아봅니다.
리모트 저장소
리모트 저장소 확인하기
git remote
명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있습니다.
이 명령은 리모트 저장소의 단축 이름을 보여줍니다.
저장소를 Clone하면 origin
이라는 리모트 저장소가 자동으로 등록되기 때문에 origin이라는 이름을 볼 수 있습니다 :
git clone git://github.com/schacon/ticgit.git
Cloning into 'ticgit'...
remote: Reusing existing pack: 1857, done.
remote: Total 1857 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1857/1857), 374.35 KiB | 193.00 KiB/s, done.
Resolving deltas: 100% (772/772), done.
Checking connectivity... done.
위와 같이 Clone을 했다고 가정했을 경우 아래와 같은 명령을 실행하면 origin 이라는 이름을 볼 수 있습니다.
cd ticgit // 디렉토리 이동 후
git remote
origin
-v
옵션을 주어 단축이름과 URL을 함께 볼 수 있다:
git remote -v
origin git://github.com/schacon/ticgit.git (fetch)
origin git://github.com/schacon/ticgit.git (push)
리모트 저장소 추가하기
앞의 포스팅에서 리모트 저장소를 추가하는 것에 대해 언급했었지만 자세하게 다루지는 않았습니다.
여기에서는 리모트 저장소를 추가하는 방법을 조금더 알아봅니다.
쉽게 새 리모트 저장소를 추가할 수 있는데 git remote add [단축이름] [url]
명령을 실행한다:
git remote
origin
git remote add pb git://github.com/paulboone/ticgit.git
git remote -v
origin git://github.com/schacon/ticgit.git
pb git://github.com/paulboone/ticgit.git
이제 URL 대신에 스트링 pb
를 사용할 수 있습니다.
예를 들어 로컬 저장소에는 없지만 Paul의 저장소에 있는 것을 가져오려면 아래과 같이 실행합니다 :
git fetch pb
remote: Counting objects: 58, done.
remote: Compressing objects: 100% (41/41), done.
remote: Total 44 (delta 24), reused 1 (delta 0)
Unpacking objects: 100% (44/44), done.
From git://github.com/paulboone/ticgit
* [new branch] master -> pb/master
* [new branch] ticgit -> pb/ticgit
로컬에서 pb/master가 Paul의 master 브랜치입니다. 이것을 로컬 브랜치중 하나에 머지하거나 체크아웃하여 브랜치 내용을 자세히 확인할 수 있습니다.
리모트 저장소를 Pull 하거나 Fetch 하기
리모트 저장소에서 데이터를 가져오려면 간단히 아래와 같이 실행합니다 :
git fetch [remote-name]
이 명령은 로컬에는 없지만, 리모트 저장소에는 있는 데이터를 모두 가져옵니다.
그리고 나면 리모트 저장소의 모든 브랜치를 로컬에서 접근할 수 있어서 언제든지 머지를 하거나 내용을 살펴볼 수 있습니다.
저장소를 Clone하면 명령은 자동으로 리모트 저장소를 origin이라는 이름으로 추가됩니다.
그래서 나중에 git fetch origin
을 실행하면 Clone한 이후에(혹은 마지막으로 가져온 이후에) 수정된 것을 모두 가져온다.
fetch 명령은 리모트 저장소의 데이터를 모두 로컬로 가져오지만, 자동으로 머지하지는 않습니다. 그래서 당신이 로컬에서 하던 작업을 정리하고 나서 수동으로 머지해야 한다.
그냥 쉽게 git pull
명령으로 리모트 저장소 브랜치에서 데이터를 가져올 뿐만 아니라 자동으로 로컬 브랜치와 머지시킬 수 있습니다.
먼저 git clone
명령은 자동으로 로컬의 master 브랜치가 리모트 저장소의 master 브랜치를 추적하도록 합니다(물론 리모트 저장소에 master 브랜치가 있다고 가정에서).
그리고 git pull
명령은 Clone한 서버에서 데이터를 가져오고 그 데이터를 자동으로 현재 작업하는 코드와 머지시킵니다.
리모트 저장소에 Push하기
프로젝트를 공유하고 싶을 때 리모트 저장소에 Push할 수 있다. 이 명령은 git push [리모트 저장소 이름] [브랜치 이름]으로 단순하다.
master 브랜치를 origin 서버에 Push하려면(다시 말하지만 Clone하면 보통 자동으로 origin 이름이 생성된다) 아래와 같이 서버에 Push합니다 :
git push origin master
이 명령은 Clone한 리모트 저장소에 쓰기 권한이 있고, Clone하고 난 이후 아무도 리모트 저장소에 Push하지 않았을 때만 사용할 수 있습니다.
다시 말해서 Clone한 사람이 여러 명 있을 때, 다른 사람이 Push한 후에 Push하려고 하면 Push할 수 없습니다.
먼저 다른 사람이 작업한 것을 가져와서 머지한 후에 Push할 수 있다.
다음의 명령을 살펴봅니다 :
git push -u origin master
여기서 -u 옵션은 설정파일에 현재의 master 브랜치를 origin의(자신의 원격저장소) master 브랜치로 연결해 주어 다음부터는 자동으로 master브랜치에서 git push를 하면 origin의 master브랜치로 푸시가 되고 git pull을 하면 origin의 master를 fetch해서 로컬의 master로 merge하도록 설정하는 것입니다.
그래서 .git/config파일의 내용을 보면 다음과 같이 master브랜치의 원격저장소와 머지할 브랜치가 설정되어 있는 것을 볼 수 있습니다.(clone을 받아오면 이 설정이 자동으로 추가된다.)
[branch "master"]
remote = origin
merge = refs/heads/master
리모트 저장소 이름을 바꾸거나 리모트 저장소를 삭제하기
git remote rename
명령으로 리모트 저장소의 이름을 변경할 수 있습니다.
예를 들어 pb를 paul로 변경하려면 git remote rename
명령을 사용한다:
git remote rename pb paul
git remote
origin
paul
리모트 저장소의 브랜치 이름도 바뀐다.
여태까지 pb/master로 리모트 저장소 브랜치를 사용했으면 이제는 paul/master라고 사용해야 합니다.
리모트 저장소를 삭제해야 한다면 git remote rm
명령을 사용합니다.
서버 정보가 바뀌었을 때, 더는 별도의 미러가 필요하지 않을 때, 더는 기여자가 활동하지 않을 때 필요합니다 :
git remote rm paul
git remote
origin
'Dev Environment > Git' 카테고리의 다른 글
GitLab 소개 (SSH 생성) (0) | 2016.05.12 |
---|---|
Git branch(브랜치) (0) | 2016.02.02 |
Git 기초- 깃(git) 명령어 배워보기 (5) | 2016.02.01 |
Git 개념 (0) | 2015.06.15 |
VCS & Git/Github (0) | 2015.03.04 |