글자 크기

GitHub 없이도 배포가 되는 이유

2025년 5월 발표된 BOND의 인공지능 트렌드 리포트 표지. Mary Meeker 외 작성자 명시.

— git commit을 하지 않으면, 그 코드는 존재하지 않는다

버튼 하나를 바꿨다.
식사 기록 목록 화면에서
‘새 식사 기록’ 버튼을 ‘홈으로’ 링크로 바꿨다.

로컬에서는 잘 보였다.
웹에서도 문제없었다.
그래서 bin/deploy를 실행했다.

그런데 모바일에서는
여전히 예전 버튼이 그대로 보였다.

“왜지?”

코드는 분명 바뀌었는데
서버는 모른 척을 하고 있었다.

⸻

내가 하고 있던 착각

나는 이렇게 생각하고 있었다.
• 파일을 저장했으니 변경된 것이다
• 배포를 했으니 서버에 반영됐을 것이다
• GitHub 저장소도 없는데, Git이 뭐 그리 중요할까

하지만 이 셋 다
배포의 세계에서는 틀린 생각이었다.

⸻

결정적인 한 줄

그 순간 이 문장을 들었다.

“git commit을 하지 않으면,
그 코드는 배포되지 않습니다.”

처음엔 당연한 말처럼 들렸는데
곱씹어 보니 전혀 당연하지 않았다.

나는 GitHub도 만들지 않았고
어딘가에 push한 적도 없었기 때문이다.

그런데도 배포는
commit을 기준으로만 이루어지고 있었다.

⸻

GitHub가 없어도 Git은 완전하다

이제야 분리해서 이해하게 됐다.
• Git은
내 컴퓨터 안에서 코드의 역사를 관리하는 도구다.
• GitHub는
그 역사를 외부에 보관하거나 공유하는 장소일 뿐이다.

즉,
GitHub는 없어도 Git은 동작한다.
그리고 배포 도구는
GitHub가 아니라 Git의 커밋을 본다.

⸻

commit의 진짜 의미

git commit은
“외부로 보내는 행위”가 아니었다.

그건 이런 선언에 가깝다.

“이 상태의 코드를
하나의 공식적인 역사로 인정한다.”

커밋되지 않은 코드는
내 컴퓨터 안에서는 존재하지만,
배포의 관점에서는 아직 태어나지 않은 코드다.

⸻

Kamal은 무엇을 배포하는가

Kamal은 내 로컬 파일을 보지 않는다.
저장 여부도 보지 않는다.

Kamal이 믿는 건 단 하나다.

현재 Git 저장소의 최신 커밋 상태

그래서 순서가 중요하다.
1. git add — 이 변경을 기록할 대상으로 올리고
2. git commit — 이 상태를 역사로 확정한 뒤
3. bin/deploy — 그 역사를 서버로 옮긴다

이 중 하나라도 빠지면
서버는 과거에 머문다.

⸻

비유로 이해해보면

• 로컬에서 파일 수정
→ 혼잣말
• git commit
→ 일기장에 날짜 찍고 한 페이지 완성
• 배포
→ 그 페이지를 복사해 서버 벽에 붙이는 일

일기장에 쓰지 않은 이야기는
아무리 머릿속에 있어도
역사가 되지 않는다.

⸻

내가 얻은 진짜 깨달음

이건 단순한 Git 사용법이 아니었다.

코드는 저장으로 바뀌는 게 아니라
커밋으로 세상에 등장한다.

그리고 이 한 줄로 정리된다.

GitHub는 선택이다.
Git commit은 현실이다.
배포는 현실만을 믿는다.

⸻

이 글은
미래의 나에게 남기는 메모이기도 하고,
지금 막 같은 벽 앞에 서 있는 누군가에게는
작은 등불이 되길 바란다.

나도 그랬다.
버튼 하나로 시작된 의문이
개발의 세계를 한 칸 넓혀주었다.

느리지만,
확실하게 앞으로 가고 있다.