원격 저장소
지금까지는 내 컴퓨터 안의 이야기였습니다. 이제 인터넷에 있는 저장소와 연결해 push · fetch · pull 을 놀라지 않고 씁니다.
학습 목표
- 원격을 연결하고 내 커밋을 올릴 수 있다
- fetch 와 pull 의 차이를 설명할 수 있다
- 추적 브랜치와 `-u` 옵션이 무엇인지 이해한다
원격 저장소는 인터넷 어딘가(대개 GitHub)에 있는 같은 저장소이며, 이름은 관례적으로 origin 입니다. git remote add origin <URL> 로 연결하고, git push 로 내 커밋을 올리고, git pull 로 남의 커밋을 받습니다. 로컬에서 하던 방식이 달라지지는 않습니다. 원격은 모두가 만나기로 약속한 또 하나의 사본일 뿐입니다.
git fetch 와 git pull 의 차이를 아는 사람과 모르는 사람의 차이는 큽니다. fetch 는 원격의 최신 상태를 가져오기만 하고 내 브랜치는 건드리지 않습니다. pull 은 fetch 한 뒤 곧바로 내 브랜치에 합칩니다. 무엇이 올라와 있는지 먼저 보고 싶다면 fetch 후 git log origin/main 으로 확인한 다음 합치는 편이 안전합니다.
git push -u origin main 의 -u 는 로컬 브랜치와 원격 브랜치를 짝지어 두는 옵션입니다. 한 번 짝지어 두면 다음부터는 git push, git pull 만 쳐도 됩니다. 그리고 git pull --rebase 를 기본으로 쓰면 "Merge branch 'main'…" 같은 의미 없는 병합 커밋이 이력에 쌓이지 않습니다. 내 커밋이 받아 온 것 위로 다시 얹혀 이력이 한 줄로 유지됩니다.
이 단계에서 익히는 명령어
눈으로 읽지 말고 터미널에 직접 쳐 보세요. 손이 기억해야 실무에서 나옵니다.
git remote add origin <URL>- 이 저장소를 원격과 연결하고 이름을 `origin` 으로 둡니다.
git push -u origin main- 올리면서 브랜치를 짝지어 둡니다. 이후로는 `git push` 만 쳐도 됩니다.
git fetch origin- 내 브랜치는 그대로 두고 원격의 최신 상태만 받아 옵니다.
git pull --rebase- 받아 온 것 위에 내 커밋을 다시 얹어 이력을 한 줄로 유지합니다.