내 코드를 클라우드에 백업하기 — GitHub에 처음 git push 하기 (인스타에 사진 올리듯)

2026. 6. 22. 17:11·Hello Dev
이 글은 Git 입문 시리즈의 3편입니다. 아직 커밋(첫 저장점)을 안 만들어 보셨다면, 먼저 2편. 내 코드의 첫 저장점 만들기 (git add와 commit)를 끝내고 오시면 막힘없이 따라오실 수 있습니다.

2편까지 잘 따라오셨다면, 이제 여러분의 컴퓨터 안에는 커밋이 차곡차곡 쌓인 작은 사진첩(.git)이 생겼습니다. 그런데 한 가지, 마음 한구석이 찜찜하지 않나요?

"이 사진첩이 내 컴퓨터 안에만 있잖아. 노트북을 잃어버리거나 하드가 고장 나면… 그동안 찍은 사진(커밋)이 통째로 사라지는 거 아냐?"

맞습니다. 지금까지 한 일은 전부 내 폰 안에서만 사진을 정리한 것과 같아요. 그래서 이번 3편에서는 그 사진첩을 클라우드(GitHub)에 통째로 올려서, 컴퓨터가 고장 나도 안전하게 백업하고 전 세계와 공유하는 방법을 배웁니다. 1편에서 예고했던 '인스타그램에 사진 올리기'가 드디어 등장합니다.

GitHub가 뭐길래? — 내 사진첩을 올리는 '인스타그램'

한 문장으로 말하면, GitHub는 내 코드 사진첩을 올려두는 클라우드입니다. 인스타그램에 빗대면 딱 들어맞아요.

우리 폰 갤러리에 사진이 쌓여 있죠? 그걸 인스타그램에 올리면 ① 폰이 고장 나도 사진이 안전하고, ② 친구들과 공유할 수 있고, ③ 다른 기기에서도 똑같이 볼 수 있습니다. Git이 폰 갤러리라면, GitHub는 인스타그램인 셈이죠.

지금까지(로컬) 이번에 배울 것(원격) 인스타그램에 비유하면
내 컴퓨터 안
Local
GitHub 클라우드
Remote
내 폰 → 인스타그램 서버
커밋을 쌓는다
git commit
커밋을 올린다
git push
사진을 인스타에 업로드

그러니 오늘 할 일은 딱 세 가지입니다. ① GitHub에 빈 사진첩(저장소)을 만들고 → ② 내 폴더와 연결한 뒤 → ③ 커밋을 올린다(push). 하나씩 천천히 해볼게요.

1단계 — GitHub에 빈 사진첩(저장소) 만들기

먼저 사진을 올려둘 공간이 있어야겠죠. GitHub에서는 이 공간을 저장소(repository, 줄여서 '레포')라고 부릅니다. 인스타그램으로 치면 '새 계정의 빈 피드'를 하나 여는 셈이에요. (아직 github.com 가입 전이라면 먼저 가입해 주세요. 무료입니다.)

  • 화면 오른쪽 위의 + 버튼을 누르고 New repository를 선택합니다.
  • Repository name에 저장소 이름을 적습니다(예: my-first-git). 영문·숫자·하이픈을 쓰며, 최대 100자까지 가능합니다.
  • Public / Private를 고릅니다. Public은 누구나 볼 수 있는 공개 저장소, Private은 나만 보는 비공개 저장소예요. 연습용이면 둘 중 아무거나 괜찮습니다.
  • 맨 아래 Create repository 버튼을 누릅니다.
여기서 가장 흔한 실수 — 체크박스를 건드리지 마세요 — 저장소를 만들 때 "Add a README file", ".gitignore 추가", "라이선스 추가" 같은 초기화 옵션이 보여도 전부 체크하지 마세요. 우리는 이미 내 컴퓨터에 커밋(사진)이 있는 상태라, GitHub에도 사진을 미리 넣어버리면 나중에 올릴 때 두 사진첩이 충돌해서 에러(non-fast-forward)가 납니다. 완전히 빈 저장소로 만들어야 깔끔하게 올라갑니다.

저장소를 만들면 GitHub가 친절하게 "…or push an existing repository from the command line"이라는 안내와 함께 명령어 몇 줄을 보여줍니다. 바로 그게 다음 단계예요.

2단계 — 내 폴더를 GitHub에 연결하고 올리기 (push)

이제 내 컴퓨터의 폴더(2편에서 만든 my-first-git)와 방금 만든 GitHub 저장소를 연결할 차례입니다. 먼저 터미널(맥)이나 Git Bash(윈도우)를 열고, 2편에서 했던 것처럼 cd 명령으로 그 폴더 안으로 들어갑니다.

cd my-first-git

이제 아래 세 줄을 차례로 칩니다. 첫 줄의 내아이디는 반드시 본인 GitHub 아이디로 바꿔야 합니다.

git remote add origin https://github.com/내아이디/my-first-git.git
git branch -M main
git push -u origin main

그런데 주소를 직접 타이핑하면 오타가 나기 쉽습니다. 그래서 복사해 붙여넣는 걸 강력히 권해요. 저장소를 막 만든 직후 GitHub 화면에는 "…or push an existing repository from the command line" 안내와 함께 위 명령이 본인 주소로 이미 채워진 채 나옵니다. 오른쪽의 복사 아이콘을 눌러 통째로 복사한 뒤 터미널에 붙여넣으면 오타 걱정이 없어요. (그 화면을 이미 닫았다면, 저장소 페이지의 초록색 Code 버튼을 누르고 HTTPS 주소를 복사하면 됩니다.)

한 줄씩 뜯어보면 하나도 안 어렵습니다.

  • git remote add origin … — "앞으로 내 사진을 이 인스타 계정(GitHub 주소)에 올릴게" 하고 연결처를 등록합니다. origin은 그 원격 주소에 붙이는 별명이에요(관례적으로 origin을 씁니다). 주소는 GitHub 저장소 페이지의 초록색 Code 버튼에서 복사할 수 있습니다.
  • git branch -M main — 기본 가지(브랜치) 이름을 main으로 맞춥니다. GitHub의 기본 이름이 main이라 그냥 통일하는 거예요. (예전 자료엔 master로 나오기도 하는데, 요즘은 main이 표준입니다.)
  • git push -u origin main — 드디어 커밋(사진)을 GitHub에 올립니다. push가 바로 '업로드'예요. 뒤에 붙은 -u는 "앞으로 이 폴더는 origin의 main이랑 짝꿍이야"라고 기억시키는 옵션입니다. 덕분에 다음부터는 그냥 git push만 쳐도 됩니다.
origin은 한 번만 — git remote add origin은 폴더당 처음 한 번만 합니다. 이미 연결한 폴더에서 또 치면 remote origin already exists라고 나와요. 그땐 새로 추가하는 게 아니라 git remote set-url origin 새주소로 주소만 바꾸면 됩니다.

3단계 — "어? 비밀번호가 안 먹혀요" (인증의 함정)

git push를 치면 GitHub가 "너 진짜 이 계정 주인 맞아?" 하고 신원을 확인합니다. 인스타에 사진 올리려면 로그인해야 하는 것과 똑같죠. 그런데 바로 여기서 거의 모든 입문자가 한 번씩 막힙니다.

예전 습관대로 GitHub 아이디와 비밀번호를 입력하면 이런 빨간 메시지가 뜨거든요.

remote: Support for password authentication was removed on August 13, 2021.
fatal: Authentication failed

당황하지 마세요. 버그가 아니라 정상입니다. GitHub는 보안을 위해 2021년 8월 13일부터 계정 비밀번호로 git 작업하는 것을 막았습니다. 이제는 비밀번호 대신 '전용 출입증'으로 로그인해야 해요. 방법은 크게 두 가지인데, 초보자에게는 첫 번째(GitHub CLI)를 추천합니다.

가장 쉬운 길 — GitHub CLI(gh)로 로그인

GitHub가 만든 공식 도구 gh(GitHub CLI)를 쓰면, 브라우저로 딱 한 번 로그인하는 걸로 인증이 끝납니다. 토큰을 직접 만들 필요도, 어딘가에 적어둘 필요도 없어요. 그래서 처음 시작하는 분께 가장 추천합니다. 두 단계면 됩니다.

① 먼저 gh를 설치합니다. 운영체제에 맞게 한 줄이면 끝나요.

# 맥 (Homebrew가 깔려 있다면)
brew install gh

# 윈도우 (winget 사용)
winget install --id GitHub.cli

맥에 Homebrew가 없거나 위 방법이 막히면, cli.github.com에서 설치 파일을 받아 설치해도 똑같습니다. 설치가 잘 됐는지는 gh --version을 쳐서 버전이 나오면 확인된 거예요.

② 그다음 로그인합니다.

gh auth login

명령을 치면 몇 가지를 물어보는데, 화살표 키로 고르고 Enter만 누르면 됩니다. 순서대로 이렇게 고르세요.

  • 계정 종류: GitHub.com (회사 전용 GitHub Enterprise가 아니라면 이걸로)
  • 프로토콜: HTTPS
  • "Authenticate Git with your GitHub credentials?" 질문엔 Yes
  • 로그인 방법: Login with a web browser → 화면에 뜬 일회용 코드(예: AB12-CD34)를 복사해서, 자동으로 열린 브라우저 창에 붙여넣고 승인

여기까지 하면 끝입니다. 한 번 로그인해 두면 그다음부터 git push가 비밀번호도 안 묻고 군말 없이 동작해요. 가장 헷갈릴 일이 적은 방법입니다.

또 다른 길 — 개인용 액세스 토큰(PAT)

gh를 안 쓴다면, 개인용 액세스 토큰(Personal Access Token, PAT)을 만들어 비밀번호 칸에 대신 넣습니다. 인스타로 치면 '앱 전용 비밀번호' 같은 거예요. GitHub Settings → Developer settings → Personal access tokens에서 만들 수 있고, 요즘은 권한을 잘게 줄 수 있는 Fine-grained token이 권장됩니다.

토큰은 처음 한 번만 보입니다 — PAT를 만들면 그 긴 문자열이 딱 한 번만 표시됩니다. 창을 닫으면 다시 못 보니, 비밀번호 관리 앱 등에 잘 저장해 두세요. (그래도 잃어버리면 새로 만들면 됩니다.) 한 번 입력한 토큰은 Git이 잠시 기억해 줘서, 매번 칠 필요는 없어요.

push, pull, clone — 헷갈리는 삼형제 정리

원격 저장소를 다루는 명령은 결국 '올리기'와 '내려받기'의 변주일 뿐입니다. 이 셋만 구분하면 충분해요.

명령 방향 인스타그램에 비유하면
git push 내 컴퓨터 → GitHub 내 사진을 인스타에 올리기
git pull GitHub → 내 컴퓨터 다른 곳에서 올린 변경을 내려받아 합치기
git clone GitHub → 새 폴더 남의 공개 앨범(또는 내 저장소)을 통째로 복제

예를 들어 회사 컴퓨터에서 작업하고 집 컴퓨터로 와서 이어서 하고 싶다면, 집에서 git clone 주소로 한 번 복제해 두고, 이후로는 git pull로 최신 사진을 받고 git push로 올리면 됩니다. 이게 바로 백업이자 협업의 기본기예요.

초보가 자주 만나는 빨간 글씨

처음엔 누구나 에러를 만납니다. 빨간 글씨가 떠도 겁먹지 마세요 — 대부분 아래 셋 중 하나입니다.

  • Authentication failed (비밀번호 인증 제거) — 위에서 본 그 메시지죠. 비밀번호 대신 gh auth login 또는 PAT로 로그인하면 해결됩니다.
  • remote origin already exists — 이미 origin을 연결한 폴더에서 또 add를 한 경우입니다. git remote set-url origin 새주소로 주소만 바꾸세요.
  • ! [rejected] … non-fast-forward — GitHub에 내 컴퓨터엔 없는 변경(예: 저장소 만들 때 체크한 README)이 있어서 올리기가 거부된 경우입니다. git pull로 먼저 그 변경을 받아 합친 뒤 다시 push하면 됩니다. (그래서 1단계에서 README 체크를 하지 말라고 했던 거예요!)

정리 — 이제 내 코드는 안전합니다

방금 전까지 내 컴퓨터 안에만 있던 사진첩이, 이제 클라우드에도 똑같이 백업됐습니다. 노트북이 고장 나도, 카페에서 빌린 다른 컴퓨터를 켜도, 여러분이 찍은 커밋은 그대로 남아 있어요.

사실 오늘 한 일을 거칠게 줄이면 딱 한 호흡입니다. GitHub에 빈 저장소를 만들고(README는 체크하지 말고), git remote add로 연결한 다음, git push로 올린다. 중간에 비밀번호가 막히면 당황하지 말고 gh auth login 한 번 해두면 그만이고요. 처음엔 이 몇 줄이 외계어처럼 보였겠지만, 한 번 직접 올려보고 나면 "이게 다였어?" 싶을 거예요.

그리고 이 push 하나를 손에 익힌 순간, 여러분은 이미 코드를 '내 컴퓨터 밖'으로 내보내는 — 협업의 문턱을 넘은 셈입니다.

다음 4편은 한결 든든한 이야기예요. 코드를 만지다 보면 "아, 방금 그거 되돌리고 싶다" 하는 순간이 반드시 옵니다. 잘못 커밋했을 때 시간을 거꾸로 돌리는 법(복구와 되돌리기), 그 안전벨트를 다음 편에서 채워 드릴게요.

Git 입문 시리즈
← 이전 글 2편. 내 코드의 첫 저장점 만들기 (Commit 입문)
다음 글 → 4편. 실수해도 괜찮아 — Git으로 되돌리기

참고 자료

  • GitHub Docs — 로컬 코드를 GitHub에 올리기 (Adding locally hosted code to GitHub)
  • GitHub Docs — 새 저장소 만들기 (Creating a new repository)
  • GitHub Blog — Git 작업의 토큰 인증 요구사항 (비밀번호 인증 종료)
  • GitHub Docs — 개인용 액세스 토큰(PAT) 관리
  • GitHub Docs — non-fast-forward 에러 다루기
  • Pro Git 2판 (한국어) — 리모트 저장소
저작자표시 비영리 변경금지 (새창열림)

'Hello Dev' 카테고리의 다른 글

오픈소스와 팀 협업의 꽃 — Fork·Clone과 Pull Request로 첫 기여하기  (0) 2026.06.23
평행 우주에서 안전하게 개발하기 — Git 브랜치·병합(merge)과 충돌(conflict) 해결  (0) 2026.06.22
실수해도 괜찮아 — Git으로 되돌리기 (restore·amend·reset·revert, 그리고 생명줄 reflog)  (0) 2026.06.22
내 코드의 첫 저장점 만들기 — git add와 commit, 사진 찍듯 이해하기  (0) 2026.06.19
Git이 대체 뭐길래? 10분 만에 이해하는 핵심 개념과 설치 가이드  (0) 2026.06.17
'Hello Dev' 카테고리의 다른 글
  • 평행 우주에서 안전하게 개발하기 — Git 브랜치·병합(merge)과 충돌(conflict) 해결
  • 실수해도 괜찮아 — Git으로 되돌리기 (restore·amend·reset·revert, 그리고 생명줄 reflog)
  • 내 코드의 첫 저장점 만들기 — git add와 commit, 사진 찍듯 이해하기
  • Git이 대체 뭐길래? 10분 만에 이해하는 핵심 개념과 설치 가이드
@Cura
@Cura
재밌는 IT 이야기와 최신 개발 뉴스를 쉽고 친절하게 전합니다.
  • @Cura
    HelloDev.kr
    @Cura
  • 전체
    오늘
    어제
    • 분류 전체보기 (9)
      • Hello Dev (8)
      • Trend & Tech (0)
      • Core Tech (0)
      • Dev Life (0)
      • Dev Humor (1)
  • 블로그 메뉴

    • 링크

    • 공지사항

    • 인기 글

    • 태그

      reset revert 차이
      깃허브 협업
      버전관리
      깃허브 올리기
      개발입문
      깃
      rebase merge 차이
      충돌해결
      git
      git restore
      깃 입문
      깃 되돌리기
      git switch
      git amend
      개발유머
      Github
      git alias
      깃 고급
      git 입문
      HelloDev
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.6
    @Cura
    내 코드를 클라우드에 백업하기 — GitHub에 처음 git push 하기 (인스타에 사진 올리듯)
    상단으로

    티스토리툴바