깃(Git) 로컬 저장소와 원격 저장소의 차이, 그리고 push와 pull의 의미
깃을 쓰다 보면 로컬 저장소, 원격 저장소, push, pull 같은 말이 계속 나옵니다. 처음에는 이 말들이 서로 어떻게 연결되는지 헷갈리기 쉽습니다. 이 글에서는 두 저장소가 무엇이 다른지, push와 pull은 각각 어떤 일을 하는지 쉬운 비유로 정리하고, 내 컴퓨터의 저장소가 원격과 연결되어 있는지 확인하는 방법까지 알아봅니다.
로컬 저장소란
로컬 저장소는 내 컴퓨터 안에 있는 저장소입니다. 앞선 글에서 git init으로 만들고 git commit으로 기록을 쌓았던 바로 그 저장소입니다. 인터넷이 없어도 커밋을 만들 수 있고, 내 컴퓨터에만 존재합니다. 노트에 쓰는 일기장을 떠올리면 쉽습니다. 일기장은 내 책상 위에 있어서 나만 볼 수 있습니다.
원격 저장소란
원격 저장소는 인터넷 위의 서버에 있는 저장소입니다. 깃허브(GitHub)가 대표적인 예입니다. 내 컴퓨터가 고장 나도 원격에 올려 둔 기록은 남아 있고, 다른 사람과 같은 프로젝트를 함께 작업할 수도 있습니다. 일기장을 복사해서 인터넷 보관함에 올려 둔 것이라고 생각하면 됩니다.
push와 pull의 의미
push는 내 컴퓨터에 쌓은 커밋을 원격 저장소로 올리는 것입니다. 일기장의 새로 쓴 쪽을 보관함에 올리는 동작입니다.
pull은 원격 저장소에 있는 새 기록을 내 컴퓨터로 가져오는 것입니다. 다른 사람이 보관함에 올린 새 쪽을 내 일기장으로 받아 오는 동작입니다.
여기에 하나 더, clone은 원격 저장소 전체를 내 컴퓨터에 처음 통째로 복사해 오는 것입니다. 처음 한 번만 하고, 그 뒤로는 pull로 새 내용만 받아 옵니다.
내 저장소가 원격과 연결되어 있는지 확인하기
내 로컬 저장소에 원격 저장소가 연결되어 있는지는 아래 명령으로 확인합니다. 저장소 폴더 안에서 입력하세요.
git remote -v
앞선 글에서 연습용으로 만든 폴더는 원격과 연결한 적이 없기 때문에 아무것도 출력되지 않습니다. 아무것도 나오지 않는다면 이 저장소는 내 컴퓨터에만 있다는 뜻입니다.
원격 저장소가 연결되어 있다면 아래처럼 origin이라는 이름과 주소가 나옵니다. origin은 원격 저장소에 흔히 붙이는 기본 이름입니다. 아래 주소는 예시이고, 사용자이름 자리에는 각자의 깃허브 계정 이름이 들어갑니다.
origin https://github.com/사용자이름/저장소이름.git (fetch)
origin https://github.com/사용자이름/저장소이름.git (push)
원격 저장소 연결하고 올리는 흐름
깃허브에서 새 저장소를 만든 뒤에는 아래 명령으로 내 로컬 저장소와 연결할 수 있습니다. 주소 부분은 깃허브가 알려 주는 내 저장소 주소로 바꿔 넣어야 합니다.
git remote add origin https://github.com/사용자이름/저장소이름.git
연결한 뒤에는 커밋을 원격으로 올립니다. 처음 올릴 때는 아래처럼 입력합니다.
git push -u origin main
원격에 새 기록이 생겼다면 내 컴퓨터로 받아 올 때는 아래 명령을 씁니다.
git pull
push를 할 때 인증 오류가 나는 경우가 있습니다. 그럴 때는 아래 글을 참고하세요.
깃허브에 파일 업로드할 때 자주 나는 인증 오류 대처법
처음 하는 분들이 자주 하는 실수
가장 흔한 실수는 commit만 하고 push를 하지 않는 것입니다. 커밋은 내 컴퓨터에만 기록되므로, push를 하기 전에는 깃허브에 아무것도 올라가지 않습니다. 또 다른 사람과 함께 작업한다면 작업을 시작하기 전에 pull로 최신 내용을 먼저 받아 오는 습관이 좋습니다.
마무리
오늘은 로컬 저장소와 원격 저장소의 차이, push와 pull, clone이 각각 무엇인지 알아봤습니다. 로컬은 내 컴퓨터의 일기장, 원격은 인터넷 보관함이고, push는 올리기, pull은 받아 오기라고 기억하면 쉽습니다. git remote -v로 내 저장소가 어디와 연결되어 있는지 한 번 확인해 보세요.
저도 이 글을 쓰면서 새 폴더를 만들고 git init을 한 뒤 git remote -v를 직접 입력해 봤습니다. 원격 저장소를 연결하지 않은 저장소에서는 아무것도 출력되지 않았고, 이를 통해 이 저장소가 내 컴퓨터에만 있다는 것을 확인할 수 있었습니다.




댓글 0
첫 댓글을 남겨보세요.