[Git 시리즈 4편] GitHub 연동 - push, pull, clone

English version

GitHub 연동

이번 글에서는 이전 실습에서 만든 로컬 Git 저장소를 GitHub와 연결합니다. 여기서 로컬 저장소는 내 컴퓨터 안의 작업 폴더이고, GitHub 저장소는 인터넷에 있는 공용 보관함입니다.

교무실 업무로 비유하면 이렇습니다. 내 컴퓨터 폴더는 내 책상 위의 업무 파일철이고, GitHub는 여러 선생님이 함께 확인할 수 있는 교무실 공용 캐비닛입니다. 내 책상에서 정리한 자료를 공용 캐비닛에 올릴 수도 있고, 공용 캐비닛에 누군가 업데이트한 자료를 다시 내 책상으로 가져올 수도 있습니다.


이 글에서 할 것

  • GitHub 계정 생성하고 저장소 만들기
  • 로컬 저장소와 GitHub 연결하기
  • 코드 push/pull 하기
  • 저장소 clone 하기

준비물

명령어를 복사하기 전에

이 글에서 사용자이름은 본인의 GitHub 사용자이름으로 바꿔야 합니다. 예를 들어 GitHub 사용자이름이 math-teacher라면 주소는 다음처럼 됩니다.

https://github.com/math-teacher/my-first-repo.git

my-first-repo는 GitHub에 만들 저장소 이름입니다. 저장소 이름을 다르게 만들었다면 명령어에서도 같은 이름으로 바꿔 주세요.

30초 개념 지도

실습 전에 다섯 가지 방향만 먼저 잡고 가면 뒤의 명령어가 훨씬 덜 낯설어집니다.

Git 용어 교무실 업무 비유 실제 의미
remote 공용 캐비닛의 위치 내 컴퓨터 밖에 있는 Git 저장소 주소
origin 그 캐비닛에 붙인 별명 보통 가장 기본으로 연결한 원격 저장소 이름
push 내 책상 파일을 공용 캐비닛에 올리기 내 커밋을 GitHub에 업로드
pull 공용 캐비닛의 최신 파일을 내 책상으로 가져오기 GitHub의 최신 커밋을 내 컴퓨터에 반영
clone 공용 캐비닛 파일철 전체를 새로 복사해 받기 GitHub 저장소 전체를 새 폴더로 복제

로그인 참고

GitHub는 Git 작업에서 계정 비밀번호를 그대로 받지 않습니다. 처음 git pushgit pull을 할 때 사용자이름과 비밀번호를 묻는 화면이 나오면, GitHub 사용자이름과 Personal Access Token(PAT)을 입력합니다. PAT는 계정 비밀번호를 직접 맡기지 않기 위해 발급받는 임시 업무 출입증처럼 생각하면 됩니다. 만든 토큰은 다시 확인하기 어려우니 비밀번호 관리자처럼 안전한 곳에 보관하고, 가능하면 만료 기한을 정해 두는 것이 좋습니다.


실습 1: GitHub 계정 생성

이미 GitHub 계정이 있다면 이 실습은 건너뛰고 저장소 만들기부터 진행해도 됩니다.

GitHub 가입

  1. github.com 접속
  2. Sign up 클릭
  3. 이메일, 비밀번호, 사용자이름 입력
  4. 이메일 인증 완료

실습 2: GitHub 저장소 생성

이번 실습에서는 GitHub 위에 빈 저장소를 하나 만듭니다. 아직 파일을 직접 넣지 말고 비워 두는 것이 좋습니다. 그래야 이전 글에서 만든 내 컴퓨터의 프로젝트를 그대로 올리는 흐름을 연습할 수 있습니다.

새 저장소 만들기

  1. GitHub에서 + 버튼 클릭
  2. "New repository" 선택
  3. Repository name: my-first-repo
  4. Public 선택
  5. "Add a README file" 체크박스는 선택하지 않기
  6. "Create repository" 클릭

생성 후 화면: GitHub가 바로 실행할 명령어 3개를 안내해 줍니다. 지금은 “내 책상 파일철을 어느 공용 캐비닛에 연결하고, 그쪽으로 올리는 명령어구나” 정도로 보면 됩니다.

GitHub이 안내하는 최초 연결 명령 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

실습 3: 원격 저장소 연결

이번 실습에서는 내 컴퓨터의 프로젝트와 GitHub 저장소를 서로 연결합니다. 아직 파일을 올리는 단계가 아니라, “내 책상 파일철은 앞으로 저 공용 캐비닛과 주고받겠다”라고 주소를 등록하는 단계입니다.

시작 위치 확인

먼저 이전 글에서 만든 프로젝트 폴더 안에 있는지 확인합니다. 커밋이 하나 이상 있어야 GitHub에 올릴 기록도 생깁니다.

로컬 저장소 시작 상태 확인 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

로컬 프로젝트로 이동하고 remote 등록

git remote add origin ...은 GitHub 저장소 주소를 내 로컬 저장소에 등록하는 명령어입니다. 여기서 remote는 원격 저장소, 즉 내 컴퓨터 밖에 있는 저장소를 뜻합니다. origin은 그 원격 저장소에 붙이는 기본 별명입니다. 처음에는 원격 저장소가 하나뿐이므로 origin만 알면 충분합니다.

교무실 비유로 말하면 https://github.com/사용자이름/my-first-repo.git은 공용 캐비닛의 정확한 위치이고, origin은 그 캐비닛에 붙여 둔 “우리 반 자료함” 같은 별명입니다. 이후에는 긴 주소를 매번 쓰지 않고 origin이라고 부를 수 있습니다.

원격 저장소 연결 확인 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

git remote -v 결과에 origin이 두 줄 보이면 연결이 된 것입니다. (fetch)는 내려받을 때 쓰는 주소, (push)는 올릴 때 쓰는 주소입니다. 초보 단계에서는 보통 두 줄이 같은 주소로 나오며, 같은 GitHub 저장소와 주고받는다는 뜻으로 이해하면 됩니다.


실습 4: 코드 Push

push는 내 컴퓨터에 저장된 커밋을 GitHub로 올리는 작업입니다. 내 책상에서 결재가 끝난 문서 묶음을 공용 캐비닛에 꽂아 두어 다른 사람도 볼 수 있게 만드는 상황과 비슷합니다. 아직 git commit을 하지 않았다면 올릴 커밋이 없으므로, 먼저 3편처럼 git addgit commit을 끝내야 합니다.

Push

처음 push할 때는 -u origin main을 함께 붙입니다. 여기서 -u는 업스트림(upstream)을 설정한다는 뜻입니다. 쉽게 말하면 “앞으로 내 main 파일철은 보통 origin이라는 공용 캐비닛의 main 칸과 주고받는다”라고 Git에게 기억시키는 설정입니다.

GitHub에 Push zsh · ~/workspace
Ready. Press Replay to run the scripted session.

성공 메시지의 branch 'main' set up to track 'origin/main'은 방금 말한 연결 기억이 완료되었다는 뜻입니다. 다음부터는 같은 위치로 올릴 때 git push만 입력해도 되는 경우가 많습니다.

GitHub에서 확인

  1. github.com에서 저장소로 이동
  2. README.md 내용 확인
  3. 파일 목록 확인

GitHub에 파일이 보이면 내 책상 파일철의 커밋이 공용 캐비닛에 잘 올라간 것입니다.


실습 5: GitHub에서 수정 후 Pull

이번에는 반대 방향을 연습합니다. GitHub에서 먼저 파일을 고친 뒤, 그 변경을 내 컴퓨터로 가져옵니다.

pull은 공용 캐비닛에 있는 최신 문서를 내 책상 파일철로 가져오는 일입니다. 공동으로 쓰는 생활기록부 양식이나 행사 계획서를 생각해 보세요. 누군가 공용 폴더의 파일을 업데이트했다면, 내가 예전 파일을 붙잡고 계속 작업하기 전에 최신본을 먼저 가져와야 합니다.

GitHub에서 파일 수정

  1. GitHub에서 README.md 클릭
  2. 연필 아이콘(✏️) 클릭
  3. 내용 수정:
    # My First Project
    GitHub에서 수정했습니다!
    
  4. "Commit changes..." 버튼 클릭
  5. 커밋 메시지 입력
  6. "Commit changes" 클릭

로컬로 Pull

git pull은 내부적으로 fetchmerge를 이어서 실행합니다. 먼저 GitHub의 최신 커밋을 내려받고(fetch), 그 내용을 현재 내 컴퓨터 폴더에 자동으로 합치려고 시도합니다(merge). 즉 “공용 캐비닛의 최신본을 가져와 내 책상 파일도 같은 상태로 맞추기”입니다. 서로 같은 줄을 다르게 고치지 않았다면 보통 자동으로 잘 합쳐집니다.

GitHub에서 Pull zsh · ~/workspace
Ready. Press Replay to run the scripted session.

Fast-forward 메시지가 나오면 정상적으로 성공한 것입니다. 내 쪽에서 따로 엇갈린 수정이 없어서 Git이 최신 위치로 자연스럽게 앞으로 이동했다는 뜻입니다. 문서 관리로 치면 내 책상 파일에 손댄 내용이 없어서 공용 캐비닛의 최신본으로 바로 바꿔 끼운 상황입니다.

로컬에서 확인

pull 후 로컬 파일 확인 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

내 컴퓨터에서도 GitHub에서 고친 문장이 보이면 pull이 성공한 것입니다.


실습 6: Clone 실습

clone은 이미 GitHub에 있는 저장소 전체를 새 폴더로 복사해 오는 작업입니다. 보통 저장소를 처음 받을 때 한 번 사용합니다. pull이 이미 연결된 내 파일철을 최신 상태로 맞추는 일이라면, clone은 공용 캐비닛에 있는 파일철 전체를 처음부터 통째로 복사해 새 책상에 가져오는 일입니다.

예를 들어 새로 업무를 맡은 선생님이 기존 학급 행사 자료 전체를 받아야 한다면, 파일 하나만 업데이트하는 것이 아니라 행사 폴더 전체를 복사해 받아야 합니다. 그 상황이 git clone에 가깝습니다.

새 폴더에서 Clone

clone용 폴더 준비 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

Clone

git clone URL을 실행하면 저장소 이름과 같은 새 폴더가 생기고, 그 안에 파일과 Git 기록이 함께 들어옵니다.

저장소 Clone zsh · ~/workspace
Ready. Press Replay to run the scripted session.

Cloned 프로젝트 확인

clone 결과 확인 zsh · ~/workspace
Ready. Press Replay to run the scripted session.

이제 같은 프로젝트가 두 군데에 있습니다. 원래 만들었던 my-first-git-project 폴더와, GitHub에서 새로 복제해 온 my-first-repo 폴더입니다.


핵심 명령어 정리

명령어 설명 사무/교무실 비유
git remote add origin URL 원격 저장소 연결 공용 캐비닛 위치를 내 업무 파일철에 적어 두기
git remote -v 연결 확인 어느 캐비닛과 연결되어 있는지 주소 확인
git push -u origin main 처음으로 코드 올리기 내 책상 파일철을 공용 캐비닛 main 칸에 올리고, 앞으로도 그 칸을 쓰겠다고 기억시키기
git push 코드 올리기 내 커밋을 공용 캐비닛에 올리기
git pull 코드 받아와 자동으로 합치기 공용 캐비닛의 최신본을 내 책상 파일철에 반영하기
git clone URL 저장소 처음 복제 공용 캐비닛의 파일철 전체를 새 폴더로 복사해 받기

AI 도구에 이렇게 요청해도 됩니다

GitHub 연결에서는 주소와 인증 정보가 함께 나오므로 더 조심해야 합니다. 토큰이나 비밀번호는 AI 채팅창에 붙여 넣지 마세요.

GitHub remote 연결 상태를 확인해줘.
git status, git branch, git remote -v를 설명하고, remote 추가나 push는 내가 허락하기 전에는 실행하지 마.
처음 push할 준비가 되었는지 확인해줘.
git log --oneline, git status, git remote -v를 보여주고 올릴 커밋을 설명해줘. push 실패 시 git push -f나 --force-with-lease는 제안하지 마.
pull 중 충돌이 나면 충돌 표시(<<<<<<<, =======, >>>>>>>)가 있는 파일만 알려줘.
자동으로 한쪽을 선택하지 말고, 어떤 내용을 남길지 나에게 물어본 뒤 git add 파일명과 commit 단계를 안내해줘.

clone은 새 폴더에 받을 때만 요청하세요: “현재 위치와 같은 이름의 폴더가 있는지 확인하고, 실행 전 물어봐”를 함께 넣으면 안전합니다.

실수 대처

"fatal: Authentication failed"

해결:

  • GitHub 사용자이름 확인
  • GitHub 계정 비밀번호 대신 Personal Access Token(PAT) 사용
  • 예전에 잘못 저장한 로그인 정보가 있다면 Mac의 키체인이나 자격 증명 관리자에서 지운 뒤 다시 시도

"fatal: repository not found"

해결:

  • GitHub에 저장소가 실제로 있는지 확인
  • 명령어의 사용자이름을 본인 GitHub 사용자이름으로 바꿨는지 확인
  • GitHub 저장소 페이지에서 URL을 다시 복사해 git remote add origin ... 명령어에 사용

"rejected: non-fast-forward"

왜 생기나요?

GitHub 쪽에 내 컴퓨터에는 아직 없는 새 커밋이 있을 때 자주 생깁니다. 공용 캐비닛 문서가 이미 더 최신인데, 내 예전 문서를 그대로 덮어쓰려고 해서 Git이 막는 상황입니다.

해결:

git pull origin main
git push origin main

먼저 최신본을 가져온 뒤 다시 올립니다. 만약 git pull 중 같은 줄을 서로 다르게 고쳤다는 충돌 메시지가 나오면, 해당 파일을 열어 내용을 정리한 뒤 저장해야 합니다. 충돌 파일에는 보통 <<<<<<<, =======, >>>>>>> 같은 표시가 생기며, 위쪽/아래쪽 내용 중 무엇을 남길지 고르는 단계라고 보면 됩니다. 그 다음 git add 충돌_파일명, git commit -m "충돌 해결", git push origin main 순서로 다시 올립니다. 충돌 해결은 다음 단계의 협업 흐름에서 더 자세히 다루면 됩니다.

"fatal: not a git repository"

해결:

cd 올바른_폴더
git init  # 또는 git clone

이 오류는 Git 저장소가 아닌 폴더에서 Git 명령어를 실행했다는 뜻입니다. 교무실 비유로 말하면 업무 파일철이 없는 책상에서 “이 파일철의 기록을 보여 줘”라고 말한 셈입니다.


push, pull, clone 한 줄 구분

헷갈릴 때는 방향만 기억해도 됩니다.

상황 쓰는 명령어 방향
내 컴퓨터에서 만든 커밋을 GitHub에 올림 git push 내 책상 → 공용 캐비닛
GitHub의 최신 변경을 내 컴퓨터에 내려받아 합침 git pull 공용 캐비닛 → 내 책상
GitHub 저장소 전체를 새 폴더로 처음 받음 git clone URL 공용 캐비닛 전체 복사 → 새 책상

실습 완료 체크리스트

  • GitHub 계정 생성
  • GitHub 저장소 생성
  • remote 연결
  • push 성공
  • GitHub에서 파일 수정
  • pull 성공
  • clone 성공

다음 편

👉 Git 시리즈 5편: 브랜치와 .gitignore

💬 댓글

이 글에 대한 의견을 남겨주세요