Git 의 기본 개념

ANN·2025년 5월 22일

Git(TIL)

목록 보기
1/1
post-thumbnail

Git이라는 건
항상 제멋대로 명령어를 써오기만 했지...
이론적인 내용은 잘 모르는 영역이라,
공부하는 내용을 정리해보려고 한다...

📝 Git이란

코드 버전 관리 프로그램

📌 버전 관리란?

소프트웨어를 개발할 때, 처음부터 완벽하게 만들기보다는
수정과 추가를 반복하면서 발전시켜 나갑니다.

이 과정에서 다음과 같은 상황이 자주 발생합니다:

  • 이전 버전의 코드가 필요할 때
  • 특정 시점의 상태로 되돌리고 싶을 때

버전 관리는 이런 상황에 대비하여
파일의 변경 이력을 기록하고,
원하는 시점의 상태로 복원할 수 있도록 도와줍니다.

📌 버전 관리의 장점

  • 변경 이력 추적 가능
  • 이전 버전으로 쉽게 되돌아갈 수 있음
  • 여러 사람이 동시에 작업해도 충돌 없이 협업 가능

📌 즉, Git은

버전 관리 도구이며
협업을 위한 기능을 제공하는 툴

📝 GitHub란?

버전 관리 시스템인 Git을 활용해 코드를 저장하고 협업할 수 있는 서비스

📌 GitHub의 핵심 기능

버전 관리

Git을 기반으로 소스 코드 변경 이력을 체계적으로 관리할 수 있습니다.

동시 협업

여러 명이 동시에 같은 프로젝트를 수정하고 합칠 수 있어 협업에 탁월합니다.

작업물 공유 및 백업

다른 컴퓨터나 사람에게 작업물을 전송할 수 있으며,
로컬에 문제가 생겨도 GitHub에 백업된 코드를 다시 내려받을 수 있습니다.

원격 저장소 제공

GitHub은 외부에 존재하는 컴퓨터처럼 작동하여,
프로젝트를 안전하게 보관하고 언제든지 접근하게 해줍니다.

즉, 내 프로그램의 모든 버전을 GitHub이란 컴퓨터에 저장하기 때문에,
내 로컬 컴퓨터에서 문제가 생겨도 언제든지 GitHub에서 프로그램의 코드를 가져올 수 있습니다.

📌 Git과 GitHub의 차이

구분GitGitHub
역할버전 관리 도구Git 저장소를 위한 클라우드 서비스
설치로컬(내 컴퓨터)에 설치웹사이트 기반 서비스 (https://github.com)
기능변경 이력 기록, 버전 되돌리기 등협업, 백업, 공유, PR 등 다양한 부가 기능
예시git commit, git logpull request, issues, actions

📌 즉, GitHub은

Git을 사용하는 사람들을 위한 원격 저장소 서비스이며
협업과 백업을 쉽게 만들어주는 플랫폼

📝 Git 써보기

📌 Repository와 Commit

☑️ Repository란?

Git이 프로젝트의 모든 변경 사항을 저장하는 공간

이 저장소는 .git이라는 숨김 디렉토리 형태로 프로젝트 폴더 안에 생성됩니다.

  • .git 디렉토리 = Git 레포지토리
  • Git은 이 안에 커밋 로그, 브랜치, 설정 등 모든 정보 저장

☑️ Commit이란?

Git이 현재 스테이지에 올라온 파일들의 상태를 저장하는 동작이자 그 결과물

즉, 프로젝트의 변경된 내용만 저장하는 스냅샷입니다.

단,❗️전체 디렉토리를 사진처럼 저장하는 게 아니라,
변경된 파일들의 차이점만 저장하는 방식(Differential snapshot)입니다.
(가장 처음의 커밋만 전체 파일의 스냅샷)

커밋의 특징

  • 커밋 메시지, 작성자, 시간, 해시 등의 메타데이터 포함
  • 각 커밋은 고유한 ID로 구분

커밋 메시지와 작성자는 직접 설정해줍니다.

📝 Git의 3가지 작업 영역

Git은 내부적으로 크게 3가지 종류의 작업 영역을 통해 파일 변경을 추적하고 저장합니다.

Working Directory(또는 Working Tree)

로컬에서 작업하는 프로젝트 디렉토리입니다.

  • 우리가 에디터에서 파일을 열고 수정하는 공간입니다.
  • Git이 추적 중인 파일이 변경되면, 변경 상태로 표시 됩니다.
  • 아직 Git에 저장되지는 않은 상태입니다.
    실제로 내가 코딩하는 공간입니다.

Staging Area(Index)

커밋할 파일을 임시로 모아두는 공간입니다.

  • git add한 파일들이 존재하는 영역입니다.
  • 커밋할 준비가 된 파일들만 이 영역에 포함됩니다.
    즉, git commit을 하게 되면 Staging Area에 있는 파일들만 반영됩니다.
  • 스냅샷으로 만들기 직전의 중간 단계입니다.

Repository

실제 커밋이 저장되는 Git의 내부 데이터베이스(.git 디렉토리)입니다.

  • 커밋을 하면 파일의 스냅샷이 이 영역에 저장됩니다.
  • Git은 이곳에 커밋 기록, 브랜치 정보, 설정 등을 모두 보관합니다.

📌 세 영역의 구조

+--------------------+       +--------------------+       +---------------------+
| Working Directory  |  -->  |   Staging Area     |  -->  |     Repository      |
| (내가 수정 중인 공간)  |       | (git add로 담는 공간) |       | (git commit으로 저장) |
+--------------------+       +--------------------+       +---------------------+

📌 Staging Area가 필요한 이유?

workging directory에서 작업하고 만약 git add 없이 git commit -a 또는 특정 Git 설정으로 바로 커밋한다면,
모든 변경 파일이 커밋됩니다.
(물론 git commit <파일명>처럼 특정 파일만 커밋도 가능은 합니다만,...)

하지만 현실에서는...

  • 여러 파일을 작업했지만 일부만 커밋하고 싶을 때
  • 논리적으로 기능 단위로 커밋하고 싶을 때
  • 실수로 변경된 파일을 제외하고 싶을 때

이럴 때 Staging Area가 매우 유용합니다.

✅ 원하는 파일만 선택적으로 커밋하기 위해
✅ 변경 내용을 분리해 깔끔한 커밋 히스토리를 만들기 위해
→ Staging Area는 필수적인 중간 단계입니다.

0개의 댓글