교육 문의커뮤니티 입장하기

Git (버전 관리, Version Control)

Git은 선택한 파일의 변경을 커밋으로 기록하고 비교하는 버전 관리 도구입니다. 모든 편집을 자동 저장하는 것은 아니며 기록하지 않은 변경은 별도로 보존해야 합니다.

같은 말:깃깃허브GitHub버전관리소스 관리

지금까지 100명 넘게 읽었어요, 38%가 끝까지 읽었어요
Share
목차
  1. 🤔 AI가 바꾼 내용과 이전 상태를 비교하고 싶을 때
  2. 🔑 Git과 GitHub는 다릅니다
  3. 💾 게임의 세이브 포인트로 이해하기
  4. ⚙️ 자주 만나는 명령의 역할
  5. 🌿 브랜치는 복사 폴더가 아닙니다
  6. ☁️ 푸시와 풀은 외부 기록과 연결됩니다
  7. 🧯 문제가 생겼다고 전체 변경을 지우지 않기
  8. 📝 새 폴더에서 메모 하나 기록하기
  9. 📋 3줄 요약
  10. 📚 참고 자료

🤔 AI가 바꾼 내용과 이전 상태를 비교하고 싶을 때

AI에게 디자인 수정을 맡긴 뒤 여러 파일이 바뀌었다고 해 봅니다. 이전 화면과 달라진 이유를 알려면 어떤 내용을 바꿨는지 비교해야 합니다. Git은 이 변경을 기록하고 살펴보는 도구입니다. 오류를 자동으로 막지는 않지만 변경의 근거를 남기는 데 도움이 됩니다.

🔑 Git과 GitHub는 다릅니다

Git은 파일의 변경 이력을 기록하는 버전 관리 도구입니다. GitHub는 Git 저장소를 온라인에 보관하고 공유하는 서비스입니다. 저장소는 파일과 변경 기록을 관리하는 단위이며 Git 연습에 GitHub 계정이나 인터넷 업로드가 필수는 아닙니다.

보고서_최종과 보고서_수정본처럼 파일을 여러 벌 만들던 일을 떠올려 봅니다. Git에서는 같은 파일의 기록을 커밋으로 남겨 시점별 차이를 비교합니다. 저장 버튼을 누를 때마다 자동 기록되는 것은 아닙니다.

💾 게임의 세이브 포인트로 이해하기

게임에서 저장한 시점으로 돌아갈 수 있듯 Git의 커밋(commit)은 선택한 내용의 기록입니다. 다만 파일 저장, 커밋, 외부 백업은 서로 다릅니다. 커밋하지 않은 수정이나 Git이 추적하지 않은 파일까지 모두 복구해 주지는 않습니다.

파일을 고친 뒤 먼저 스테이징(staging)으로 이번 커밋에 넣을 내용을 고르고 커밋합니다. 스테이징한 뒤 다시 파일을 수정했다면 그 추가 수정은 자동으로 같은 커밋에 들어가지 않습니다.

⚙️ 자주 만나는 명령의 역할

명령역할
git status변경과 스테이징 및 추적하지 않은 파일 상태 확인
git diff추적 중인 파일의 아직 스테이징하지 않은 차이 확인
git diff --staged다음 커밋에 넣기로 고른 차이 확인
git add 파일명지정 파일의 현재 내용을 스테이징
git commit스테이징한 내용을 로컬 기록으로 남김
git log커밋 목록 확인

git add .로 모두 고르기 전에 어떤 파일이 포함되는지 봐야 합니다. 비밀 키와 업무 외 자료까지 함께 기록하지 않습니다. 처음에는 파일 이름 하나를 지정합니다.

🌿 브랜치는 복사 폴더가 아닙니다

브랜치(branch)는 특정 커밋을 가리키며 별도 변경 이력을 이어 가는 이름입니다. 폴더 전체를 새 위치로 복사하는 기능은 아닙니다. 같은 작업 폴더에서 브랜치를 바꾸면 보이는 추적 파일 내용도 바뀔 수 있습니다. 커밋하지 않은 변경은 전환을 막거나 다른 브랜치에 함께 남을 수 있습니다.

새 브랜치를 만드는 명령과 합치는 명령을 연달아 복사하지 않습니다. 합칠 때는 목적 브랜치로 이동한 상태인지와 변경 충돌 여부를 확인합니다. 이 수업의 첫 연습은 브랜치 분리 없이 파일 하나를 기록합니다.

☁️ 푸시와 풀은 외부 기록과 연결됩니다

푸시(push)는 로컬 커밋을 설정된 원격 저장소로 보내는 동작입니다. 목적지는 GitHub일 수도 있고 다른 서비스일 수도 있습니다. 풀(pull)은 원격 변경을 가져와 현재 브랜치에 통합하며 설정에 따라 병합이나 재배치를 수행할 수 있습니다. 단순 다운로드와 다릅니다.

자동 배포가 연결된 저장소는 푸시가 사이트 갱신을 일으킬 수 있습니다. 보내는 브랜치와 목적지 및 공개 범위를 확인합니다. 커밋만 한 상태는 다른 컴퓨터에 백업된 상태가 아닙니다.

🧯 문제가 생겼다고 전체 변경을 지우지 않기

먼저 git status와 git diff로 바뀐 파일과 내용을 확인합니다. 일반 git diff는 새로 만든 추적되지 않은 파일의 내용을 보여 주지 않으므로 그 파일은 직접 열어 봅니다. 스테이징한 차이는 git diff --staged로 확인합니다.

git checkout .나 git restore .를 만능 복구 명령으로 사용하지 않습니다. 기록하지 않은 정상 수정도 사라질 수 있고 새 파일이나 외부 데이터 변경까지 원상 복구하는 것도 아닙니다. 필요한 현재 내용을 별도로 보존한 뒤 복구할 파일과 기준 커밋을 정합니다.

이미 공유한 커밋을 되돌리는 일과 아직 기록하지 않은 파일 수정 취소는 방식이 다릅니다. 팀 프로젝트에서는 작업 규칙을 확인하고 대상 변경을 특정합니다. AI에게는 ‘다른 변경을 보존하고 원인과 복구 범위를 먼저 보여 줘’라고 요청할 수 있습니다.

그림은 변경을 확인하고 작은 단위로 기록하는 흐름입니다. 커밋하지 않은 모든 변경의 복구를 보장하는 뜻은 아닙니다.

📝 새 폴더에서 메모 하나 기록하기

터미널 수업의 입력과 출력 확인을 마친 뒤 git --version으로 설치 여부를 봅니다. 없으면 Git 공식 설치 안내에서 운영체제에 맞는 방법을 확인합니다. 아래는 Git이 설치된 경우의 로컬 연습입니다.

파일 탐색기에서 기존 저장소 밖의 개인 폴더에 git-first-practice라는 새 폴더를 만듭니다. 같은 이름이 있으면 다른 새 이름을 사용합니다. Mac에서는 텍스트 편집기의 포맷 메뉴에서 일반 텍스트를 선택하고 Windows에서는 메모장을 사용할 수 있습니다. 그 안에 일반 텍스트 파일 notes.txt를 만들고 모임 장소 미정 한 줄을 저장합니다. 터미널에서 cd 뒤에 새 폴더의 전체 경로를 따옴표로 감싸 넣고 이동합니다.

git init git status git add notes.txt git diff --staged git -c user.name="연습" -c user.email="practice@example.invalid" commit -m "첫 메모 기록"

각 줄의 결과를 보고 다음 줄을 실행합니다. git init에서 이미 있는 저장소를 다시 초기화했다는 메시지가 나오면 새 연습 폴더인지 확인하고 여기서 멈춥니다. staged 차이에 notes.txt 한 파일과 ‘모임 장소 미정’만 있는지 확인합니다. 마지막 줄의 이름과 주소는 이 연습 커밋에만 사용하는 가상 값이며 전역 설정을 바꾸지 않습니다. 성공하면 첫 메모 기록이라는 메시지와 커밋 식별자가 나옵니다. 오류가 나면 다음 수정 전에 오류를 해결하고 기존 사용자 설정을 통째로 바꾸지 않습니다.

notes.txt를 열어 모임 장소 도서관 2층으로 고쳐 저장한 뒤 아래 명령을 실행합니다.

git diff -- notes.txt git status

차이에서 미정이 빠지고 도서관 2층이 추가됐는지 봅니다. 출력이 별도 보기 화면에 머물면 q로 나옵니다. -는 비교에서 빠진 줄이고 +는 추가된 줄입니다. 명령을 실행했다고 이전 줄이 삭제된 것이 아니라 저장된 변경을 보여 준 것입니다.

이번에는 장소를 3층으로 바꿔 다시 확인합니다. 첫 커밋은 여전히 미정이며 아직 새 커밋을 하지 않았으므로 차이는 미정과 3층 사이에 나타납니다. 파일 저장과 Git 기록을 구분하면 첫 연습을 마친 것입니다. 파일을 찾을 수 없으면 현재 폴더와 notes.txt.txt처럼 확장자가 중복되지 않았는지 확인합니다.

📋 3줄 요약

  1. Git은 선택한 변경을 커밋으로 기록하며 파일 저장과 스테이징 및 커밋은 서로 다른 단계입니다.

  2. GitHub는 온라인 저장소 서비스이고 커밋만 해서는 원격 백업이나 업로드가 되지 않습니다.

  3. 문제가 생기면 상태와 차이를 확인하고 정상 수정을 보존한 뒤 필요한 파일의 복구 범위를 정합니다.

📚 참고 자료

공식 문서 확인: 2026년 10월 3일. 연습에는 원격 업로드가 없습니다.

Share

제대로 이해했는지 한 문제로 확인해 볼까요?

답을 고르면 바로 풀이가 나와요.

Git 저장소에서 AI에게 큰 수정을 맡기기 전 상태를 기록하려고 합니다. 가장 알맞은 행동은 무엇인가요?

예제나 확인 질문을 직접 시도한 뒤 완료 표시해요. 더 연습할 내용이 남으면 표시하지 않고 다음 글을 읽어도 됩니다. 완료 버튼은 이해도를 채점하지 않으며 잘못 표시하면 취소할 수 있어요.

4개념 / 클래스npm (패키지 매니저)