깃린이를 위한 깃(Git)/ 깃허브(GitHub) 정리

Ohback·2025년 1월 9일
post-thumbnail

나는야 깃을 한 번도 사용해 본 적 없는 깃린이.
협업에 필수인 Git에 대해 한 번쯤 짚고 넘어갈 필요가 있다고 생각하여 정리해 보았다.

1. 🐣 깃(Git)과 깃허브(GitHub), 처음 만나는 버전 관리

1-1. 깃(Git)이란?

깃은 버전 관리 도구로, 마치 워드 문서를 여러 버전(최종본, 최종최종본, 진짜최종본...)으로 저장하는 대신, 깃을 사용하면 파일이 변경될 때마다 스냅샷을 찍듯 관리할 수 있으며, 누가 언제 어떤 파일을 어떻게 수정했는지 기록이 남는다.
👉 쉽게 말해 타임머신처럼 프로젝트를 과거로 돌릴 수도 있고, 여러 사람이 동시에 작업할 수도 있게 해주는 도구!

1-2. 깃허브(GitHub)란?

깃 자체는 내 컴퓨터에서 쓰는 도구이며, 깃허브는 그 깃 저장소(Repository, 줄여서 Repo)를 인터넷에 올려서 공유할 수 있게 해주는 사이트다. 팀 프로젝트나 오픈소스 활동에서 협업할 때 거의 필수처럼 쓰인다.
👉 쉽게 말해 구글 드라이브 같은 깃 전용 클라우드라고 보면 돼요.

1-3. 깃의 4가지 영역 (작업디렉토리 → 스테이징 → 저장소 로컬/원격)

깃을 이해할 때 꼭 알아야 하는 개념이 있는데 파일을 그냥 저장한다고 끝나는 게 아니라, 단계가 나뉘어 있다는 점이다.

  • Working Directory (작업 디렉토리)
    - 내가 직접 코드를 수정하는 공간 (내 컴퓨터의 폴더)
    - 아직 깃이 추적하지 않거나 수정된 상태의 파일들이 있음
    - 예: 내가 main.py 코드를 직접 고친 상태
  • Staging Area (스테이징 영역)
    - "이 파일들을 저장할 준비가 됐어!" 하고 올려놓는 대기실
    - 저장소에 올리기 전, 어떤 파일을 기록할지 선택하는 공간
    -git add 명령어를 쓰면 파일이 여기 올라감
    - 예: git add main.pymain.py가 스테이징에 올라감
  • Local Repository (로컬 저장소)
    - 내 컴퓨터 안에 있는 깃의 데이터베이스
    - git commit 하면 스테이징된 변경 사항이 여기 기록됨 (히스토리 저장소)
    - 예: git commit -m "버그 수정" → 로컬 저장소에 하나의 버전으로 등록

  • Remote Repository (원격 저장소)
    - 깃허브(GitHub), 깃랩(GitLab), 비트버킷(Bitbucket) 등 인터넷 서버에 있는 저장소
    - git push 하면 로컬 저장소의 커밋이 원격 저장소로 올라감
    - git pull 하면 원격 저장소의 최신 내용이 내 로컬로 내려옴

👉 내 컴퓨터(로컬) 안에서 세 단계(작업 → 스테이징 → 저장소)가 있고, 마지막에 그걸 깃허브(원격)로 밀어 올려 협업할 수 있는 구조

1-4. 흐름 요약

내 컴퓨터
 ┌──────────────┐
 │ Working Dir  │   ← 내가 직접 파일 수정하는 곳
 └──────┬───────┘
        │ git add
 ┌──────▼───────┐
 │ Staging Area │   ← 올릴 준비하는 대기실
 └──────┬───────┘
        │ git commit
 ┌──────▼───────┐
 │ Local Repo   │   ← 내 PC 안 깃 저장소 (히스토리 기록)
 └──────┬───────┘
        │ git push / git pull
 ┌──────▼───────┐
 │ Remote Repo  │   ← 깃허브 (인터넷 저장소, 팀 공유)
 └──────────────┘



2. 깃의 기본 명령어

2-1. 주요 명령어 정리

  • git init → 저장소 만들기
  • git clone [저장소 주소] → 깃허브에 있는 프로젝트를 내 컴퓨터로 가져오기
  • git status → 어떤 파일이 수정되었는지, 스테이징이 필요한지 확인(현재 상태 확인)
  • git add [파일명] → 해당 파일을 스테이징에 추가
  • git add . → 전체 파일을 스테이징에 추가
  • git commit -m [메세지] → 스테이징한 변경사항을 저장
  • git push origin [브랜치명] → 커밋한 변경사항을 해당 브랜치로 업로드
  • git pull origin [브랜치명] → 해당 브랜치의 최신 버전을 로컬로 가져오기(git fetch + git merge)
  • git fetch origin → 깃허브에서 최신 브랜치/커밋 정보 가져오기(내 파일에는 변화 없음)
  • git checkout [브랜치명] → 브랜치 이동
  • git checkout -b [브랜치명] → 새 브랜치를 만들고 해당 브랜치로 이동
  • git push origin --delete [브랜치명] → 해당 브랜치 삭제
  • git reset --soft HEAD~1 → 소프트리셋, 마지막 커밋만 취소, 수정한 파일은 유지
  • git reset --hard HEAD~1 → 하드리셋, 마지막 커밋 및 변경 사항 삭제
  • git reset HEAD [파일명]git add 했던 걸 취소
  • git stash → 변경 사항 임시 저장
  • git stash pop → 저장해둔 걸 다시 불러오기

2-2. git stash 란?

지금 작업 중이던 변경사항을 임시로 보관(stash) 해두고, 워킹 디렉토리를 깨끗한 상태로 되돌려 주는 명령어. 즉, 변경 사항을 커밋하지 않고 잠깐 숨겨두는 기능!

(1) 브랜치를 급히 바꿔야 할 때

  • develop 브랜치에서 작업 중인데, 팀원이 "main 브랜치에서 급히 버그 고쳐줘!"라고 할 때
  • 그런데 지금 작업한 코드가 커밋할 정도로 정리가 안 됨

👉 이때 그냥 브랜치 바꾸면 충돌이 나거나 변경사항이 따라옴.
👉 git stash로 현재 변경사항을 서랍에 넣어두고, main으로 이동 → 버그 수정 → 다시 돌아와서 꺼내면 됨.

(2) 커밋하고 싶지 않은 임시 코드가 있을 때

  • 새로운 기능을 시험삼아 작성했는데 아직 완성 전
  • 하지만 다른 사람 코드 최신 버전(git pull)을 당겨와야 함

👉 이때도 git stash로 보관 후 pull → 다시 꺼내와서 이어서 작업 가능.


profile
기록은 기억을 지배한다.

0개의 댓글