커밋(Commit)과 푸시(Push)

이 글의 목차

소요: 25분 · 버전: v0.1 (2026-09-30) · 6장

이 장의 질문커밋은 무엇을 남기고, 푸시와 풀은 무엇을 하는가
다루는 것저장·커밋·푸시의 차이, Changes 화면 읽기, 커밋 메모 쓰기, 푸시, 풀(받기)
다루지 않는 것되돌리기(7장), 브랜치(8장)
이 장을 마치면파일을 고쳐 커밋하고 GitHub에 올릴 수 있고, GitHub에 생긴 변경을 내 PC로 받을 수 있습니다

1. 저장, 커밋, 푸시는 남는 곳이 다릅니다

작업 폴더, 내 PC의 Git 기록, GitHub 세 장소와 그 사이의 커밋, 푸시, 풀을 보여 주는 그림
동작어디에 남나누가 볼 수 있나
저장 (VS Code에서 Ctrl + S / Cmd + S)① 작업 폴더의 파일만 바뀝니다. Git 기록에는 아직 없습니다나
커밋② 내 PC의 Git 기록에 "이 시점"이 남습니다나
푸시③ GitHub에 기록이 복사됩니다저장소에 권한이 있는 사람
풀③에 새로 생긴 기록이 ①② 로 내려옵니다

커밋은 돌아올 수 있는 지점을 만드는 것, 푸시는 그 지점을 PC 밖에 보관하는 것입니다. 둘은 짝으로 씁니다.

2. 실습 1: 첫 커밋과 푸시

2-1. VS Code로 파일 고치기

  1. GitHub Desktop에서 Current Repository 가 my-first-repo 인지 확인합니다.

  2. 메뉴 Repository → Open in Visual Studio Code 를 누릅니다. VS Code가 저장소 폴더를 엽니다.

  3. VS Code 왼쪽 파일 목록에서 README.md 를 누르고, 내용을 아래처럼 바꿉니다.

    고치기 전고친 뒤
    # my-first-repo# my-first-repo
    (빈 줄)
    Git 연습용 저장소입니다.
  4. 저장합니다. Windows Ctrl + S / Mac Cmd + S

VS Code가 "이 폴더의 작성자를 신뢰하십니까?"라고 물으면 예, 작성자를 신뢰합니다 를 누릅니다. 내가 만든 폴더라서 괜찮습니다.

2-2. Changes 화면에서 확인하기

GitHub Desktop으로 돌아옵니다. 저장만 했을 뿐인데 Changes 에 README.md 가 나타납니다. Git이 "마지막 커밋 이후 이 파일이 바뀌었다"고 알려 주는 것입니다.

GitHub Desktop Changes 화면: 바뀐 파일 목록, 오른쪽의 초록색 추가 줄, 아래의 한 줄 메모 칸과 커밋 버튼

오른쪽에 보이는 것을 diff(차이)라고 합니다. 고치기 전과 후를 줄 단위로 비교해 보여 줍니다.

  # my-first-repo
+
+ Git 연습용 저장소입니다.
  • + 로 시작하는 초록색 줄은 추가된 줄, - 로 시작하는 빨간색 줄은 지워진 줄입니다.
  • 한 줄을 고치면 지운 줄(-)과 추가한 줄(+)이 짝으로 나옵니다.
- Git 연습용 저장소입니다.
+ Git 연습용 저장소입니다. (작성: 홍길동)

커밋하기 전에 이 화면에서 내가 고친 것만 바뀌었는지 봅니다. 이것이 커밋 전 확인입니다.

2-3. 커밋하기

  1. 왼쪽 아래 Summary 칸에 한 줄 메모를 씁니다. 예: README에 저장소 소개 추가
  2. 파란 Commit 1 file to main 버튼을 누릅니다. 버튼에 적힌 main 은 지금 기록하는 줄(브랜치)의 이름입니다. 브랜치는 8장에서 다룹니다.

Changes가 비고 No local changes 가 보이면 커밋이 된 것입니다. History 탭을 누르면 맨 위에 방금 만든 커밋이 있습니다.

커밋 메모는 이렇게 씁니다

나중에 History 목록만 보고도 무엇을 했는지 알 수 있게 "무엇을 왜" 한 줄로 씁니다.

좋은 예좋지 않은 예
README에 저장소 소개 추가수정
회의록 양식에 참석자 칸 추가최종, ㅁㄴㅇㄹ
날짜가 하루 밀려 나오는 문제 수정asdf

2-4. 푸시하기

커밋은 아직 내 PC에만 있습니다. 위쪽 오른쪽 버튼이 Push origin 으로 바뀌어 있습니다.

위쪽 오른쪽 버튼의 네 가지 상태: Publish repository, Fetch origin, Push origin, Pull origin
  1. Push origin 을 누릅니다.
  2. 버튼이 다시 Fetch origin 으로 바뀌면 올라간 것입니다.
  3. 메뉴 Repository → View on GitHub 로 브라우저를 열면 README.md 에 새 문장이 보입니다. 파일 목록 위의 커밋 수(예: 2 Commits)를 누르면 커밋 목록도 볼 수 있습니다.

3. 실습 2: 새 파일 만들고 커밋하기

파일을 새로 만드는 것도 똑같이 기록됩니다.

  1. VS Code 왼쪽 파일 목록 위의 새 파일 아이콘을 누르고, 이름을 회의록-양식.md 로 입력합니다.

  2. 아래 내용을 붙여 넣고 저장합니다.

    # 회의록 양식
    
    - 일시:
    - 참석자:
    - 안건:
    - 결정 사항:
    
  3. GitHub Desktop의 Changes에 회의록-양식.md 가 보입니다. 새 파일이라 모든 줄이 + 입니다.

  4. 메모 회의록 양식 추가 로 커밋하고, Push origin 을 누릅니다.

한 번에 하나씩 커밋합니다. README 수정과 회의록 양식 추가를 한 커밋에 섞으면, 나중에 하나만 되돌리기 어렵습니다. 한 가지 일이 끝날 때마다 커밋하세요.

4. 실습 3: GitHub에서 바뀐 내용 받기 (풀)

혼자 쓰는 저장소라도 다른 PC에서 작업하거나 다른 사람이 고치면, GitHub 쪽에 내 PC에 없는 기록이 생깁니다. 이번에는 GitHub 웹사이트에서 직접 고쳐서 그 상황을 만들어 봅니다.

웹사이트에서 파일을 고치는 것은 이 연습을 위해서입니다. 평소 작업은 내 PC에서 하고 커밋·푸시합니다.

GitHub 웹사이트에서 README.md를 열어 연필 아이콘으로 고치고, Commit changes로 기록을 남기는 세 화면
  1. 브라우저의 저장소 화면에서 README.md 를 누릅니다.
  2. 오른쪽 위 연필 아이콘(Edit this file)을 누릅니다.
  3. 맨 아래에 웹에서 추가한 줄 을 한 줄 추가하고, Commit changes… 를 누릅니다.
  4. 메모 칸에 웹에서 한 줄 추가 를 쓰고 Commit changes 를 누릅니다. 이 커밋은 GitHub에만 있습니다.

이제 GitHub Desktop으로 돌아와 받습니다.

  1. 위쪽 오른쪽의 Fetch origin 을 누릅니다. GitHub에 새 커밋이 있는지 확인만 하는 버튼입니다.
  2. 버튼이 Pull origin(↓1)으로 바뀝니다. 누릅니다.
  3. VS Code에서 README.md 를 보면 웹에서 추가한 줄 이 들어와 있습니다. History 맨 위에도 웹에서 한 줄 추가 가 보입니다.

Fetch를 눌러도 Pull origin으로 바뀌지 않으면 받을 것이 없다는 뜻입니다. 정상입니다.

5. 작업을 시작할 때 습관

앞으로 작업할 때마다 이 순서로 시작합니다.

  1. Current Repository 가 작업할 저장소인지 확인합니다.
  2. Fetch origin 을 누릅니다.
  3. Pull origin 으로 바뀌면 누릅니다. 바뀌지 않으면 그대로 진행합니다.
  4. 작업합니다 → 확인 → 커밋 → 푸시.

받기(Pull)는 작업을 시작하기 전, Changes가 비어 있을 때 하는 것이 가장 안전합니다. 커밋하지 않은 변경을 들고 받으면 GitHub Desktop이 어떻게 할지 묻는 창을 띄울 수 있습니다.

6. 커밋에 담기지 않는 것

  • 체크를 끈 파일: Changes 목록에서 파일 옆 체크를 끄면 그 파일은 이번 커밋에서 빠집니다. 변경은 내 PC에 그대로 남아 있습니다. 평소에는 모두 체크된 상태로 둡니다.
  • Git이 무시하도록 설정한 파일: 저장소에 .gitignore 라는 파일이 있으면, 거기에 적힌 파일은 Changes에 나타나지도 않고 커밋되지도 않습니다. 비밀번호가 담긴 설정 파일처럼 올리면 안 되는 파일에 씁니다. 12장에서 다시 다룹니다.

확인

확인 문제

① VS Code에서 저장만 했습니다. 이 변경은 Git 기록에 남았을까요? 남지 않았습니다. Changes에 보이기만 하고, 커밋해야 기록에 남습니다.
② 커밋했는데 GitHub 웹사이트에 보이지 않습니다. 왜 그럴까요? 푸시하지 않았기 때문입니다. Push origin을 누르면 올라갑니다.
③ Fetch origin을 눌렀는데 버튼이 그대로입니다. 문제가 있는 걸까요? 아닙니다. GitHub 쪽에 받을 것이 없다는 뜻입니다.

자주 발생하는 문제

증상확인할 것
파일을 고쳤는데 Changes에 아무것도 없습니다저장했는지 확인합니다. VS Code 탭 이름 옆에 동그라미(●)가 있으면 저장하지 않은 것입니다. 또는 다른 저장소가 선택되어 있는지 Current Repository 를 봅니다
커밋 버튼이 눌리지 않습니다Summary 칸이 비어 있으면 누를 수 없습니다
Push할 때 오류가 납니다오류 창의 문구를 그대로 두고 캡처합니다. GitHub 쪽에 먼저 받아야 할 커밋이 있다는 안내라면 Pull을 먼저 한 뒤 다시 Push합니다
이메일이 계정과 다르다는 경고가 나옵니다4장 "안내를 놓쳤을 때"의 Git 설정에서 계정 이메일을 고릅니다

다음 장

7장. 되돌리기(Discard · Undo · Revert)

© KYONGHO ENGINEERING & ARCHITECTS