원격 저장소에 내 코드 안전하게 보관하기
Github 등 원격 저장소와 연동하여 코드를 안전하게 백업하고 협업하는 데 필요한 git push와 pull 명령어의 사용법을 학습합니다.
지금까지 우리가 터미널에서 작업한 `git commit`이나 `git branch` 같은 모든 활동은 오직 '내 서버 컴퓨터' 한 대 안에서만 일어난 일입니다. 만약 구글 클라우드나 AWS에 장애가 생겨 내 서버가 통째로 불타버리거나 해킹을 당한다면 어떻게 될까요? 아무리 세이브 포인트를 꼼꼼히 만들어 뒀다 한들, 하드디스크가 날아가면 코드는 영원히 사라집니다. 대단원의 막을 내리는 이번 15회차에서는, 우리의 소중한 프로젝트를 구글 드라이브처럼 구름 위 안전한 금고에 백업해 두고 전 세계 어디서든 꺼내어 쓰는 '원격 저장소(Remote Repository)'의 개념과, 이를 조작하는 `push`와 `pull` 명령어에 대해 배웁니다.
코드들의 구글 드라이브: GitHub
문서를 작성할 때 내 컴퓨터 바탕화면에 저장된 파일을 구글 드라이브에 올려두면, 집에 가든 피씨방에 가든 어디서나 다시 다운받아 이어서 작업할 수 있고 노트북을 잃어버려도 안전합니다.
프로그래머들의 소스 코드 세계에서 정확히 똑같은 역할을 해주는 글로벌 1등 클라우드 서비스가 바로 GitHub(깃허브)입니다. (GitLab이나 Bitbucket 같은 다른 서비스도 있지만 역할은 동일합니다.)
내 컴퓨터(또는 내가 임대한 웹 서버) 안에 숨겨져 있던 `.git` 폴더를 '로컬 저장소(Local Repository)'라고 부른다면, 인터넷상의 깃허브 공간에 둥지를 튼 저장소를 '원격 저장소(Remote Repository)'라고 부릅니다. 이 둘은 탯줄처럼 연결될 수 있습니다.
클라우드로 짐 싸서 던지기: `git push`
터미널에서 열심히 코딩하고 여러 개의 브랜치와 커밋을 만들었습니다. 이제 이 로컬(내 컴퓨터)에 갇혀있는 역사적인 기록들을 인터넷의 깃허브 원격 저장소로 밀어 올려(Push) 백업할 차례입니다.
가장 처음 깃허브와 내 컴퓨터를 연결할 때 단 한 번의 설정(`git remote add ...`)이 필요하지만, 연결이 완료된 이후부터는 `git push` 명령어 하나면 충분합니다.
만약 내가 `main` 브랜치에서 새로운 기능을 합치고 모든 작업을 완료했다면, 터미널에 다음과 같이 칩니다.
git push 명령어 실행
$ git push origin main
Enumerating objects: 5, done.
Counting objects: 100% (5/5), done.
Writing objects: 100% (3/3), 320 bytes | 320.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0)
To https://github.com/meshops/my-vibe-website.git
1a2b3c4..5f6g7h8 main -> main여기서 `origin`은 깃허브 원격 저장소의 주소를 부르기 쉽게 줄여놓은 기본 별명(Nickname)입니다. 따라서 위 명령어는 "내 컴퓨터의 `main` 브랜치에 있는 모든 세이브 기록을, `origin`(깃허브)이라는 곳의 `main` 브랜치로 밀어 올려라!"라는 뜻이 됩니다.
에러 없이 밀어 올리기가 끝났다면 깃허브 웹사이트에 들어가 보세요. 내 코드 파일들과 방금 터미널에서 남겼던 커밋 메시지들이 예쁘게 올라가 있는 것을 확인할 수 있습니다. 이제 노트북을 강물에 빠뜨려도 내 코드는 100% 무사합니다.
클라우드에서 최신 버전 당겨오기: `git pull`
반대로 이런 상황을 가정해 봅시다. 집에 있는 노트북으로 깃허브에 코드를 `push`하고 출근했습니다. 회사 컴퓨터를 켜서 서버에 접속한 뒤 작업을 이어서 하고 싶은데, 회사 서버의 폴더에는 어제 버전의 낡은 코드가 들어있습니다. 깃허브 구름 위에 있는 가장 최신의 따끈따끈한 코드를 회사 서버로 끌어당겨와야(Pull) 합니다.
이때 사용하는 명령어가 `git pull`입니다.
터미널에 `git pull origin main`이라고 입력하면, "저기 `origin`(깃허브)의 `main` 브랜치에 있는 최신 코드 덩어리들을 지금 내 컴퓨터의 폴더 안으로 주욱 당겨와서 덮어씌워 줘!"라는 명령이 수행됩니다.
Push와 Pull의 워크플로우 비교
| 명령어 | 데이터의 이동 방향 | 주 사용 목적 |
|---|---|---|
| git push | 로컬(내 서버) ➔ 원격(GitHub) | 내가 밤새 작업한 결과물과 커밋 기록을 클라우드에 백업하여 날아가지 않게 보존할 때 |
| git pull | 원격(GitHub) ➔ 로컬(내 서버) | 다른 컴퓨터에서 작업했거나, AI 또는 동료가 깃허브에 먼저 올려둔 최신 코드를 내 로컬 환경으로 내려받아 동기화할 때 |
바이브코딩 시대의 협업과 백업
AI 에이전트 도구들은 점점 발전하여 이제는 아예 깃허브 저장소에 직접 접속해 스스로 코드를 짜고 `push`까지 해버리는 시대가 되었습니다. 자고 일어났더니 AI 비서가 밤새 깃허브에 코드를 업데이트해 두었다면, 우리는 아침에 터미널을 열고 `git pull` 한 줄만 치면 내 서버를 최신 상태로 만들 수 있습니다.
바이브코딩 완전 정복 사이클
- 11단계: 작업 시작 전 git pull 명령어로 깃허브의 최신 코드를 다운받아 동기화한다.
- 22단계: git checkout -b 명령어로 새로운 격리 브랜치를 파고 AI와 함께 코딩한다.
- 33단계: 꼼꼼히 확인 후 로컬에 git commit으로 저장하고, main으로 돌아와 합친다(merge).
- 44단계: 오늘 하루의 눈물겨운 성과를 git push 명령어로 깃허브에 날려 보내 안전하게 퇴근한다.
15회차의 대장정을 통해 여러분은 터미널이라는 낯선 바다에서 항해하는 법(`cd`, `ls`)을 배웠고, 서버가 죽었을 때 응급처치하는 기술(`kill`, `journalctl`)을 익혔으며, AI의 코드 공격으로부터 내 프로젝트를 안전하게 지켜내는 Git 방어선(`branch`, `commit`, `push`)을 완벽하게 구축했습니다. 이제 서버 장애나 코드 파괴에 대한 두려움 없이, 자신감 있게 바이브코딩으로 여러분만의 멋진 웹 서버를 운영하시길 바랍니다!
개념 퀴즈
퀴즈 답을 맞춰야 학습 완료가 됩니다.회사 컴퓨터에서 열심히 작업한 코드를 로컬 환경에서 커밋(commit)까지 완료했습니다. 이제 이 코드가 유실되지 않도록 인터넷에 있는 GitHub 원격 저장소 클라우드에 업로드(백업)하려고 합니다. 사용할 알맞은 명령어는 무엇인가요?
3줄 요약
- 1내 컴퓨터(로컬)에 저장된 코드를 재난이나 분실로부터 보호하려면 GitHub 같은 클라우드 서비스인 '원격 저장소(Remote Repository)'에 백업해야 합니다.
- 2git push 명령어는 로컬 저장소에 쌓인 세이브 포인트(커밋)들을 원격 저장소로 밀어 올려 업로드하고 동기화합니다.
- 3git pull 명령어는 원격 저장소에 있는 최신 코드를 지금 내가 작업 중인 로컬 컴퓨터 환경으로 당겨와 덮어씌움으로써 최신 상태를 유지하게 해 줍니다.