ML/Git

Git의 기초 (2) 리모트 저장소

KAU 2020. 7. 27. 00:00

리모트 저장소

리모트 저장소를 관리할 줄 알아야 다른 사람과 함께 일할 수 있다.

리모트 저장소는 인터넷이나 네트워크 어딘가에 있는 저장소를 말한다.

저장소는 여러 개가 있을 수 있는데 어떤 저장소는 읽고 쓰기 모두 할 수 있고

어떤 저장소는 읽기만 가능할 수 있다.

협업한다는 것은 리모트 저장소를 관리하면서 데이터를 거기에 Push/Pull 하는 것이다.

리모트 저장소를 관리한다는 것은 저장소를 추가, 삭제하는 것뿐만 아니라 브랜치를 관리하고

추적할지 말지등을 관리하는 것을 말한다.

 

리모트 저장소 확인하기

git remote 명령으로 현재 프로젝트에 등록된 리모트 저장소를 확인할 수 있다.

이 명령은 리모트 저장소의 단축 이름을 보여준다. 저장소를 Clone하면 origin이라는 리모트 

저장소가 자동으로 등록되기 때문에 origin이라는 이름을 볼 수 있다.

 

리모트 저장소가 여러 개 있다면 이 명령은 등록된 전부를 보여준다. 여러 사람과 함께 작업하는 리모트 저장소가 여러개라면 위와 같은 결과를 얻는다.

 

리모트 저장소 추가하기

기존 워킹 디렉토리에 새 리모트 저장소를 쉽게 추가할 수 있는데 

git remote add [단축이름] [url]  명령을 사용한다.

이제 url 대신 pb라는 이름을 사용할 수 있다. 

예를 들어 로컬 저장소에는 없지만 Paul의 저장소에 있는 것을 가져오려면 아래와 같이 실행한다.

로컬에서 pb/master 가 Paul의 master 브랜치이다. 이 브랜치를 로컬 브랜치중 하나에 Merge 하거나 

Checkout 해서 브랜치 내용을 자세히 확인할 수 있다. 브랜치를 어떻게 사용하는지는 다음시간에 더 자세히 알아보자.

 

리모트 저장소를 Pull 하거나 Fetch 하기

$ git fetch [remote-name] 

이 명령은 로컬에는 없지만, 리모트 저장소에 있는 데이터를 모두 가져온다.

그러면 리모트 저장소의 모든 브랜치를 접근할 수 있어서

언제든지 Merge를 하거나 내용을 살펴볼 수 있다.

 

저장소를 Clone 하면 명령은 자동으로 리모트 저장소를 'origin'이라는 이름으로 추가한다.

그래서 나중에 gi fetch origin 명령을 실행하면 Clone 한 이후에 수정된 것을 모두 가져 온다.

git fetch 명령은 리모트 저장소의 데이터를 모두 로컬로 가져오지만, 자동으로 Merge하지는 않는다.

그래서 로컬에서 하던 작업을 정리하고 나서 수동으로 Merge 해야 한다.

 

그냥 쉽게 git pull 명령으로 리모트 저장소 브랜치에서 데이터를 가져올 뿐만 아니라 자동으로 로컬 브랜치와 Merge

시킬 수 있다. 먼저 git clone 명령은 자동으로 로컬의 master 브랜치가 리모트 저장소의 master 브랜치를 추적하도록 한다. 그리고 git pull 명령은 Clone 한 서버에서 데이터를 가져오고 그 데이터를 자동으로 현재 작업하는 코드와 Merge 시킨다.

 

리모트 저장소에 Push 하기

프로젝트를 공유하고 싶을 때 Upstream 저장소에 Push 할 수 있다.

이 명령은 git push [리모트 저장소 이름] [브랜치 이름]' 으로 단순하다.

 

$ git push origin master

이 명령은 Clone 한 리모트 저장소에 쓰기 권한이 있고, Clone 하고 난 이후 아무도 Upstream 저장소에 Push 하지 않았을 때만 사용할 수 있다. 다시 말해서 Clone 한 사람이 여러 명 있을 때, 다른 사람이 Push 한 후에 Push 하려고 하면

Push 할 수 없다. 먼저 다른 사람이 작업한 것을 가져와서 Merge 한 후에 Push 할 수 있다.

 

리모트 저장소 살펴보기

git remote show [리모트 저장소 이름] 명령으로 리모트 저장소의 구체적인 정보를 확인할 수 있다.

origin 같은 단축이름으로 이 명령을 실행하면 아래와 같은 정보를 볼 수 있다.

리모트 저장소의 URL과 추적하는 브랜치를 출력한다. 이 명령은 git pull 명령을 실행할 때 

master 브랜치와 Merge할 브랜치가 무엇인지 보여준다.

git pull 명령은 리모트 저장소 브랜치의 데이터를 모두 가져오고 나서 자동으로 Merge 할 것이다.

그리고 가져온 모든 리모트 저장소 정보도 출력한다.

 

git remote show을 사용하면 더 많은 정보를 볼 수 있다. 

브랜치명을 생략하고 git push 명령을 실행할 때 어떤 브랜치가 어떤 브랜치로 Push 되는지 보여준다.

또 아직 로컬로 가져오지 않은 리모트 저장소의 브랜치는 어떤 것들이 있는지, 서버에서는 삭제 됐지만 아직 가지고 있는 브랜치는 어떤 것인지,git pull 명령을 실행했을 때 자동으로 Merge 할 브랜치는 어떤 것이 있는지 보여준다.

 

리모트 저장소 이름을 바꾸거나 리모트 저장소를 삭제하기

git remote rename 명령으로 리모트 저장소의 이름을 변경할 수 있다.

예를 들어 pb를 paul로 변경하려면 git remote rename 명령을 사용한다.

 

$ git remote rename pb paul
$ git remote
origin
paul

로컬에서 관리하던 리모트 저장소의 브랜치 이름도 바뀐다는 점을 생각해두자.

여태까지 pb/master로 리모트 저장소 브랜치를 사용했다면 이제는 paul/master 라고 사용해야 한다.

 

리모트 저장소를 삭제해야 한다면 git remote remove 나 git remote rm 명령을 사용한다.

서버 정보가 바뀌었을 때, 더는 별도의 미러가 필요하지 않을 때, 더는 기여자가 활동하지 않을 때 필요하다.

 

$ git remote remove paul
$ git remote
origin

 

'ML > Git' 카테고리의 다른 글

git 을 간단하게 알아보자!  (0) 2020.09.23
Git 브랜치 기초  (0) 2020.07.27
Git의 기초  (0) 2020.07.26
Git 시작하기  (0) 2020.07.26