Remote Repository
이전 [Git 빨]에서는 local Repository에서 진행된 것이므로 아직 다른 사람과는 공유를 할 수 없는 상태였다. 따라서 이를 다른 사람들과 공유하기 위해서는 local Repository에서 Remote Repository에 올려야 한다. 대표적인 Remote Repository로는 github가 있다.
remote repository는 기본적으로 빈 repositroy이며 이 곳에서 직접 작업을 할 수는 없고, 단지 local repository에 있는 branch들을 올릴 수 있다. remote repository와 통신하기 위해서는 크게 두 가지 방법이 있다. http 방법과 SSH 방법인데 보통 http 방법을 통해서 전송 및 수신하면 된다. (개인 기기에서만 진행한다면 SSH 방법을 사용해도 된다.)
local repository의 값을 remote repository에 그대로 올라가기 때문에 pointer 값인 head와 branch명이 그대로 올라가게 된다. 그러면 나중에 이 값을 받으려고 할 때 내 local repository의 pointer와 master가 헷갈릴 수 있다. remote repository에서 온 branch 앞에는 origin/~ 와 같이 붙게 된다.
origin/master와 master는 서로 다른 것으로 인식되기 때문에 local에서 commit을 하면 master만 움직일 뿐 origin/master는 움직이지 않는다. 대신 remote에 다른 사람이 새로 값을 넣어두었다면 remote repository에만 값이 바뀌게 될 것이다.
이 상태에서 다시 값을 받아온다면 f42c5를 기준으로 서로 값이 달라지게 되는 것이므로 branch로 갈라지게 된다. 따라서 이를 나중에는 merge하는 작업이 필요하다.
명령어
따라서 위와 같은 작업을 하기 위해서 clone, push, fetch, pull과 같은 방법을 사용해서 remote repository와 상호작용을 할 수 있다.
clone, fork
처음 local repository와 remote repository와 연결을 할 때 사용하는 명령어/기능이다. fork는 다른 사람이 가지고 있는 repository를 참고해서 프로젝트를 진행하려고 하지만 그 repository에 push를 하지 않으려고 할 때 사용한다. 쉽게 말하면 다른 사람이 만든 remote repository를 내가 복사해오는 것을 의미한다.
clone은 remote repository의 값을 처음 local로 가져오려 할 때 사용한다. 위에서 말했던 http나 ssh 방법을 사용해서 가져올 수 있다. http/ssh 값은 쉽게 복사를 해서 붙여넣을 수 있다. 명령어는 다음과 같이 사용한다.
git clone <http/ssh 값>
push
내 local의 값을 remote로 올리기 위해서 사용하는 명령어다. 기본적으로는 항상 origin master를 올리게 되어 있고 권한이 없다면 master의 경우에는 push가 되지 않을 수 있다. (누구나 push를 할 수 있다면 문제가 발생할 수 있다.) 명령어는 다음과 같이 사용한다. <new branch>의 default는 origin master이다.
git push <new branch>
fetch
fetch는 remote repositories로 부터 commit을 받아올 수 있다. 즉 현재의 HEAD를 유지한 채로 branch별로 바뀐 점을 가져올 수 있는 것이다. (아직 merge 하지 않았다.) 명령어는 다음과 같이 사용한다.
git fetch origin <branch>
pull
pull은 fetch와 merge 명령어를 동시에 바꾸는 것으로 현재의 HEAD가 바뀌게 될 것이다. 명령어는 다음과 같이 사용한다.
git pull
'Language > Git' 카테고리의 다른 글
[Git 빨]3. Git Branching (0) | 2019.07.26 |
---|---|
[Git 빨] 2. Git의 사용 이유와 기본적인 흐름 (0) | 2019.07.19 |
[Git 빨]1. Git 설치하기 (0) | 2019.07.12 |