본문 바로가기
IT/git

Git & GitHub 필수 개념 치트시트 처음 사용자

by 오한눈 2025. 7. 23.
반응형

Git & GitHub 필수 개념 치트시트 (노션 정리용)

Git은 "버전 관리 시스템"입니다. 어렵게 들리지만, "시간 여행이 가능한 코드 저장소"라고 생각하면 쉽습니다. 이 문서는 Git의 핵심 개념과 자주 사용하는 명령어들을, 나중에 노션(Notion)에 옮겨 정리하기 좋도록 예시와 함께 설명합니다.


1. 최초 설정 (컴퓨터에 딱 한 번만!)

Git을 설치한 후, 누가 코드를 변경했는지 기록하기 위해 사용자 정보를 설정해야 합니다.

  • 무엇을: 당신의 이름과 이메일을 Git에 등록합니다.
  • 언제: Git을 설치하고 처음 사용할 때.
  • 명령어:

# "Your Name"과 "you@example.com"을 실제 정보로 바꾸세요

git config --global user.name "Your Name"

git config --global user.email "you@example.com"


2. Git 저장소 시작하기

A. 새로운 프로젝트를 Git으로 관리 시작 (init)

  • 무엇을: 내 프로젝트 폴더를 Git이 관리하는 공간으로 만듭니다. (.git 폴더 생성)
  • 언제: 완전히 새로운 프로젝트를 시작하거나, 기존 프로젝트에 처음으로 Git을 도입할 때.
  • 명령어:

# 해당 프로젝트 폴더로 이동한 뒤 실행

git init

B. 불필요한 파일 무시하기 (.gitignore)

  • 무엇을: node_modules처럼 용량이 크거나, 자동으로 생성되거나, 민감한 정보가 담긴 파일들을 Git이 아예 무시하도록 설정합니다.
  • 언제: git init 직후, 첫 커밋을 하기 전.
  • 사용법: 프로젝트 최상위 경로에 .gitignore 라는 이름의 파일을 만들고, 무시할 파일이나 폴더 이름을 한 줄에 하나씩 적습니다.

# 의존성 파일 (npm install로 자동 생성 가능)

/node_modules

# 빌드 결과물

/build /dist

# 운영체제 자동 생성 파일

.DS_Store


3. Git의 기본 작업 사이클 (수정 -> 추가 -> 저장)

코드를 변경하고 저장하는 것은 항상 이 3단계를 따릅니다.

(이미지 출처: git-scm.com)

  1. Working Directory (작업 공간): 내가 실제 코드를 수정하는 내 컴퓨터의 폴더.
  2. Staging Area (스테이지): 커밋(저장)할 변경사항들을 잠시 대기시키는 준비 공간.
  3. Repository (저장소): 스테이지에 있던 변경사항들이 버전별로 영구히 저장되는 곳.

① 변경사항 확인 (status)

  • 무엇을: 현재 작업 폴더에서 어떤 파일이 변경되었는지, 스테이지에 무엇이 있는지 확인합니다.
  • 언제: 작업을 시작하기 전, add 하기 전, commit 하기 전에 수시로 확인하는 습관을 들이면 좋습니다.
  • 명령어:
  • git status

② 스테이지에 추가 (add)

  • 무엇을: 작업 공간에서 변경된 파일들을 스테이지(준비 공간)로 옮깁니다. "이 변경사항들을 곧 저장할 거야!"라고 표시하는 것과 같습니다.
  • 언제: 커밋하기 직전.
  • 명령어:

# 변경된 모든 파일을 스테이지에 추가 (가장 흔하게 사용)

git add .

# 특정 파일만 추가

git add index.html git add style.css

③ 저장소에 저장 (commit)

  • 무엇을: 스테이지에 올라온 변경사항들을 하나의 의미있는 버전(스냅샷)으로 만들어 저장소에 영구히 기록합니다.
  • 언제: 하나의 작업 단위(예: '로그인 기능 구현 완료')가 끝났을 때.
  • 명령어:

# -m 뒤에 "메시지"로 어떤 변경사항인지 명확히 적어야 합니다.

git commit -m "Feat: 로그인 기능 추가"

git commit -m "Fix: 메인페이지 CSS 버그 수정"


4. 원격 저장소 연동 (GitHub)

로컬 저장소(내 컴퓨터)의 코드를 GitHub 같은 원격 서버에 백업하고 공유하는 과정입니다.

① 원격 저장소 연결 (remote)

  • 무엇을: 내 로컬 저장소에 코드를 올릴 GitHub 저장소의 주소를 등록합니다. (보통 'origin'이라는 별명 사용)
  • 언제: git init 후, GitHub에 새 저장소를 만든 직후.
  • 명령어:

# <GitHub_저장소_URL> 부분에 실제 주소를 붙여넣으세요.

git remote add origin <GitHub_저장소_URL>

② 원격 저장소에 올리기 (push)

  • 무엇을: 내 컴퓨터(로컬 저장소)에 커밋한 변경사항들을 GitHub(원격 저장소)로 업로드합니다.
  • 언제: 로컬에 중요한 커밋을 완료하고, 이를 백업하거나 다른 사람과 공유하고 싶을 때.
  • 명령어:

# 'origin'이라는 원격 저장소의 'main' 브랜치로 코드를 올린다.

# -u 옵션은 한번만 사용하면 다음부터는 'git push'만 입력해도 됩니다.

git branch -M main

git push -u origin main


5. 과거로 시간 여행하기

① 변경 이력 보기 (log)

  • 무엇을: 지금까지 내가 커밋한 모든 기록을 최신순으로 확인합니다.
  • 언제: 과거 작업 내역을 보거나, 특정 시점으로 돌아가고 싶을 때.
  • 명령어:

q 키를 누르면 로그 화면에서 나올 수 있습니다.

# 모든 정보를 자세히 보기 git log

# 한 줄에 하나씩 간략하게 보기 (강력 추천!)

git log --oneline

② 과거 버전 구경하기 (checkout)

  • 무엇을: 특정 커밋 시점의 코드를 잠깐 확인만 해봅니다. 내 프로젝트 파일들이 그 시점으로 잠시 바뀝니다.
  • 언제: "예전에 이 코드 어떻게 짰더라?" 하고 참고만 하고 싶을 때.
  • 사용법:
    1. git log --oneline으로 돌아가고 싶은 커밋의 해시(예: a1b2c3d)를 복사합니다.
    2. git checkout a1b2c3d 명령어를 실행합니다.
    3. 구경이 끝나면 반드시 git checkout main 명령어로 현재 작업으로 돌아옵니다.

③ 과거 버전으로 완전히 되돌아가기 (reset)

  • 무엇을: 특정 커밋 시점으로 완전히 돌아가고, 그 이후의 모든 커밋 기록을 삭제합니다.
  • 언제: "아, 이 이후 작업은 다 잘못됐어. 이 시점부터 다시 시작할래." 라고 결심했을 때.
  • 경고: 매우 위험한 명령어입니다! 되돌릴 수 없으므로 정말 필요할 때만 사용하세요.
  • 사용법:
    1. git log --oneline으로 돌아갈 기준점 커밋의 해시를 복사합니다.
    2. git reset --hard a1b2c3d 명령어를 실행합니다.

6. 가지치기 작업 (Branch) - Git의 꽃

"현재 코드는 그대로 두고, 새로운 기능을 실험해보거나 버그를 수정하는 독립적인 작업 공간을 만드는 것"

시나리오: "로그인 기능은 완성됐는데, 소셜 로그인 기능을 추가해볼까? 근데 잘 안될 수도 있으니 원래 코드는 건드리고 싶지 않아."

① 브랜치 목록 확인 및 생성/이동

  • 무엇을: 새로운 작업 가지를 만들고, 그 가지로 작업 공간을 전환합니다.
  • 언제: 새로운 기능 개발, 버그 수정, 실험 등 기존 코드에 영향을 주고 싶지 않은 작업을 시작할 때.
  • 명령어:

# 현재 어떤 브랜치들이 있는지 목록 보기 (*가 현재 위치)

git branch

'social-login'이라는 새 브랜치를 만들고, 그곳으로 바로 이동하기

git checkout -b social-login

# 기존에 만들어둔 브랜치로 이동하기

git checkout main git checkout social-login

② 브랜치 사용 예시 (사용자님이 질문한 시나리오)

1-2-3-4-5 단계까지 작업이 진행된 main 브랜치가 있습니다.
3단계 시점에서 다른 아이디어를 시도해보고 싶습니다.

  1. 3단계 커밋 해시 확인: git log --oneline 으로 3단계 커밋의 해시(예: a1b2c3)를 찾습니다.
  2. 3단계 기반으로 새 브랜치 생성:
  3. git checkout -b new-idea a1b2c3
  4. 새로운 브랜치(new-idea)에서 작업: 이제 이 브랜치에서 add, commit을 하며 3(2), 4(2) 단계를 자유롭게 진행합니다. 이 작업은 main 브랜치에 전혀 영향을 주지 않습니다.
  5. 원래 작업으로 복귀: 언제든지 git checkout main을 입력하면, 프로젝트는 다시 5단계까지 완료된 상태로 돌아옵니다.
  6. 두 작업물을 오가기: git checkout new-ideagit checkout main을 통해 두 개의 평행 세계를 자유롭게 오갈 수 있습니다.

7. 다른 컴퓨터에서 작업 이어가기 (Clone)

GitHub에 올려둔 프로젝트를 다른 컴퓨터에서도 이어서 작업하고 싶을 때 사용합니다.

  • 무엇을: 원격 저장소(GitHub)의 프로젝트를 내 컴퓨터로 완전히 똑같이 복제해옵니다.
  • 언제: 새로운 컴퓨터에서 작업을 시작하거나, 다른 사람의 공개 프로젝트를 내 컴퓨터로 가져오고 싶을 때.
  • 사용법:
    1. GitHub에서 저장소 주소 복사: 복제하고 싶은 GitHub 저장소 페이지로 가서 < > Code 버튼을 누르고 HTTPS URL을 복사합니다.
    2. 터미널에서 명령어 실행:
    3. # 프로젝트를 저장하고 싶은 폴더로 이동한 뒤, 아래 명령어를 실행합니다.
    4. # <GitHub_저장소_URL> 부분에 복사한 주소를 붙여넣으세요.
    5. git clone <GitHub_저장소_URL>
    6. 의존성 파일 설치: clone이 완료되면, 복제된 프로젝트 폴더로 이동해서 필요한 라이브러리들을 설치해줘야 합니다.
    7. # 방금 clone으로 생성된 프로젝트 폴더로 이동
    8. cd <빌드디렉토리이름>
    9. # package.json을 기반으로 모든 라이브러리 자동 설치
    10. npm install

이제 이 컴퓨터에서도 원래 컴퓨터와 완벽하게 동일한 환경에서 add, commit, push 등의 작업을 이어갈 수 있습니다.

반응형