초보자를 위한 Git & Github 필수 명령어 가이드

개발자의 필수 덕목 Git & Github의 A to Z

2026.03.19

GitGithubProgrammingSCM

img

0. 개념 정리

  • Git: 로컬에서 코드(파일)의 버전을 관리하는 도구.
  • GitHub: Git으로 관리한 코드를 온라인에 올려서 협업·공유하는 서비스.
  • 브랜치(branch): “분기된 작업공간”처럼, 다른 기능을 동시에 개발할 수 있게 해 주는 것.
  • 커밋(commit): 한 번의 저장 단위. “어떤 때 어떤 내용을 수정했는지”가 기록됨.
  • 원격 저장소(remote): GitHub, GitLab 같은 서비스에 있는 저장소. 로컬과 동기화.

1. GitHub 계정 만들기

  1. 브라우저에서 접속
  2. 가입하기
    • Sign up → 이메일, 비밀번호, 사용자 이름(예: myname123) 입력 → Continue → 인증 후 Finish sign up.
  3. 로그인 상태 유지
    • 로그인 후에는 Signed in as 사용자명이 우측 상단에 보여야 함.

2. Git 설치 (로컬)

Git은 로컬에 설치해야 터미널에서 git add, git commit 같은 명령을 쓸 수 있음.

  • Windows
  1. https://git-scm.com 에서 Downloads → Windows 설치 파일 다운로드.
  2. 설치 파일 실행 → 기본값으로 계속 Next만 누르고 설치.
  • macOS
    • brew install git (터미널에서)
    • 또는 위 사이트에서 macOS 설치 파일 다운로드.

설치 후 터미널(또는 Command Prompt)에서 확인:

bashgit --version
  • 예: git version 2.40.0처럼 나오면 설치 성공.

3. Git 기본 설정 (이름·이메일)

깃은 “누가 커밋했는지”를 기록하기 위해 이름·이메일을 설정해야 함.

bashgit config --global user.name "자신의이름"
git config --global user.email "이메일@example.com"
  • 예:
bashgit config --global user.name "KimDeveloper"
git config --global user.email "kim@example.com"
  • --global은 전역 설정이라 한 번만 하면 됨.

4. GitHub과 SSH/HTTPS 연결 설정 (선택)

Push/Pull할 때 계정 인증을 두 방식 중 하나로 설정:

4‑1. HTTPS 방식 (초보 추천)

  • 그냥 git push 시에 GitHub 비밀번호(또는 Personal Access Token)를 물어봄.
  • 별도로 아무 설정 안 하고 바로 git clonegit push 가능.

4‑2. SSH 키 방식 (한 번 세팅하면 비번 안 침)

  1. 터미널에서 SSH 키 생성:
bashssh-keygen -t rsa -b 4096 -C "이메일@example.com"
  • Enter 만 두 번 눌러 기본 경로(~/.ssh/id_rsa) 사용.
  1. 공개키 내용 확인:
bashcat ~/.ssh/id_rsa.pub
  • 터미널에 출력되는 내용을 복사.
  1. GitHub 설정에서 SSH 키 등록
    • GitHub → 우측 상단 프로필 → SettingsSSH and GPG keysNew SSH key
    • Title: my laptop
    • Key: 방금 복사한 ssh-rsa ... 전체 붙여넣기 → Add SSH key.
  2. 연결 테스트
bashssh -T git@github.com
  • Hi 사용자명! You've successfully authenticated... 메시지 나오면 OK.

5. 첫 번째 Git 프로젝트 만들기

5‑1. 로컬 폴더 만들기

예: hello-git 폴더 만듦

bashmkdir hello-git
cd hello-git

5‑2. Git 저장소 초기화

bashgit init
  • 이 폴더를 Git 저장소로 만듬.

1. Git 기본 사용 흐름

1‑1. 로컬 저장소 준비

  • 새 프로젝트 폴더에서:
bashgit init
  • 이 폴더를 Git 저장소로 만듦.
  • 이미 GitHub에 있는 저장소를 복사할 때:
bashgit clone https://github.com/사용자/프로젝트.git

1‑2. 기본 작업 순서

  1. 변경 감지
bashgit status
  • 어떤 파일이 수정·추가됐는지 확인.
  1. 변경 선택 (Staging)
bashgit add 파일명
git add .
  • git add .은 현재 폴더의 모든 변경을 커밋 대기 영역에 올림.
  1. 이력 저장 (커밋)
bashgit commit -m "이번에 뭐 고쳤는지 설명"
  • 예: git commit -m "로그인 기능 추가"
  1. 원격 저장소에 올리기 (push)
bashgit push origin main
  • main 대신 master 같은 브랜치가 쓰일 수도 있음.
  1. 다른 사람 변경 받아오기 (pull)
bashgit pull origin main
  • 협업할 때는 git add·git commit 전에 이걸 먼저 해 주는 게 좋음.

1‑3. VS Code에서 쓰는 느낌

  • 상단 Source Control 아이콘(깃 모양) 클릭.
  • 변경된 파일에 + 눌러 StagingCommit 버튼으로 커밋 →
  • 상단 ...Push / Pull로 동기화.

2. 브랜치 만드는 법

2‑1. 로컬에 브랜치 생성

  • 현재 브랜치 기준으로 새 브랜치를 만들기만:
bashgit branch feature-login
  • 이 명령만 치면 브랜치는 생기지만, 아직 그 브랜치로 이동하지 않음.

2‑2. 생성 + 동시에 이동

  • 보통 이렇게 씀:
bashgit checkout -b feature-login
  • feature-login 브랜치 생성 + 바로 그 브랜치로 전환.
  • git branch 명령으로 보면 현재 브랜치 위에 *가 붙어 있는지 확인 가능.

2‑3. VS Code에서 브랜치 만들기

  • 하단 상태바에 브랜치 이름(main 같은 것) 클릭 →
  • Create new branch… → 이름 입력 → Enter
    • 브랜치 생성 + 자동으로 그 브랜치로 이동.

3. 브랜치 병합 및 삭제

3‑1. merge로 병합

  • 기본 브랜치로 이동 (예: main):
bashgit checkout main
  • 작업 브랜치를 main에 병합:
bashgit merge feature-login
  • feature-login의 커밋이 main에 합쳐짐.
  • 충돌이 나면 파일을 열고 수정 → git addgit commit으로 마무리.

3‑2. 병합 후 브랜치 삭제

  1. 로컬에서 삭제 (안전)
bashgit branch -d feature-login
  • 이미 병합된 브랜치인 경우만 삭제됨.
  • 아직 병합되지 않으면 에러가 나서 실수 방지.
  1. 강제 삭제
bashgit branch -D feature-login
  • 병합 여부 상관없이 바로 삭제.
  1. 원격 저장소(예: GitHub)에서 삭제
bashgit push origin --delete feature-login

3‑3. 한 번에 정리 예시

bashgit checkout main
git merge feature-login
git push origin main

git branch -d feature-login
git push origin --delete feature-login
  • “병합 → 로컬·원격 브랜치 삭제”까지 한 번에 정리.

4. rebase로 병합하는 고급 흐름

4‑1. merge vs rebase 개념

  • merge
    • 브랜치를 그대로 합쳐서, 병합 커밋(merge commit) 을 하나 만듦.
    • 히스토리에 브랜치가 갈라지고 다시 합쳐진 흔적이 남음. 협업용으로 많이 씀.
  • rebase
    • 브랜치의 커밋들을 기준 브랜치 끝에 다시 쌓아서 선형으로 정리.
    • 병합 커밋이 없어서 히스토리가 더 깔끔해 보임.
    • 하지만 커밋 ID가 새로 만들어져서, 이미 푸시된 브랜치를 여러 사람이 공유 중이면 남이랑 충돌 날 수 있음.

4‑2. 기본 rebase 흐름 예시

예: feature-login 브랜치를 main 끝에 정리해서 합치기

  1. 기능 브랜치로 이동:
bashgit checkout feature-login
  1. main 기준으로 리베이스:
bashgit rebase main
  • feature-login의 커밋들이 main 최신 커밋 뒤로 다시 쌓임.
  • 충돌이 나면 충돌 파일 수정 → git addgit rebase --continue.
  1. main으로 돌아와서 병합 (보통 fast‑forward merge):
bashgit checkout main
git merge feature-login
  • rebase로 인해 feature-loginmain 뒤에 정렬되어 있어, 별도의 병합 커밋 없이 바로 합쳐지는 경우가 많음.

4‑3. rebase를 쓰는 대표 상황

  • PR/MR 올리기 전 히스토리 정리
    • git rebase main으로 main과 최신 동기화 + 충돌 미리 해결.
    • 남이 보기 좋은 선형 히스토리를 만들 때.
  • 커밋 정리용: rebase --interactive (interactive rebase)
    • 여러 커밋을 하나로 묶고, 순서를 바꾸거나, 텍스트를 수정할 수 있음.
    • PR에서 Squash and merge 같은 옵션은 이걸 자동으로 해주는 느낌.
  • rebase주의 점
    • 이미 공용 브랜치에 푸시된 커밋을 rebase하면, 다른 사람이 pull에서 충돌·혼란을 겪을 수 있음.
    • 그래서 내 개인 브랜치 안에서만 rebase 사용하는 게 기본 원칙.

4‑4. VS Code / GitHub에서의 rebase 느낌

  • VS Code에서 PR 만들 때 옵션:
    • Create a merge commitmerge 스타일.
    • Rebase and mergegit rebase 방식으로 히스토리를 선형 정리.
    • Squash and merge → 여러 커밋을 하나의 커밋으로 압축해서 올림.

5. 깃에 있는 다른 중요 기능들

5‑1. 이전 상태로 돌아가기

  • git checkout 커밋해시
    • 특정 커밋 시점으로 코드를 잠시 보고 싶을 때.
  • git restore 파일명
    • 한 파일만 마지막 커밋 상태로 되돌리기.
  • git reset
    • 커밋을 되돌리거나, 커밋을 아예 지우고 다시 커밋하는 등 히스토리를 수정하는 용도.
    • git reset --hard HEAD~1처럼 쓰면 최근 커밋을 삭제함. 주의 필요.

5‑2. 세 가지 영역 이해

깃은 아래 세 영역을 구분해서 관리:

  • 작업 디렉토리 (Working Directory)
    • 지금 폴더에서 직접 수정 중인 파일들.
  • Staging Area (index)
    • git add로 선택한 변경들이 모이는 장소.
  • 저장소 (Repository)
    • git commit으로 기록된 이력 전체.

git statusgit addgit commit의 흐름은 “작업 디렉토리” → “Staging” → “저장소”로 이동하는 과정이라고 보면 이해가 쉬움.


5‑3. 태그(tag)로 릴리즈 버전 관리

  • 태그 만들기:
bashgit tag v1.0.0
git push origin v1.0.0
  • 특정 태그로 이동:
bashgit checkout v1.0.0

→ 서비스 릴리즈 버전(v1.0.0, v2.0.0처럼)을 명확히 기록할 때 씀.


5‑4. .gitignore로 파일 무시하기

  • 프로젝트 폴더에 .gitignore 파일 생성:
gitignorenode_modules/
*.log
.env
  • 이런 패턴이 적힌 파일은 git add에 아예 포함되지 않음. → 빌드 폴더, 로그, 로컬 환경 변수 파일을 깃에 올리지 않게 할 때 필수.

5‑5. 변경 이력·차이 보기

  • git log
    • 커밋 목록, 작성자, 날짜, 메시지 조회.
  • git log --oneline
    • 한 줄 요약으로 보기 좋게.
  • git diff
    • 수정 전·후 코드 차이를 비교.
  • git blame 파일명
    • 파일의 각 줄마다 누가, 언제 수정했는지 보여 줌.
    • 버그 찾을 때 유용.

5‑6. 원격 저장소와 동기화

  • git clone
    • 원격 저장소를 로컬에 처음 복사.
  • git pull
    • 원격 변경을 가져와서 현재 브랜치에 병합 (fetch + merge).
  • git fetch
    • 원격 변경만 가져오고, 자동 병합은 안 함.
    • git merge 또는 git rebase로 직접 합침.
  • git push
    • 로컬 커밋을 원격에 업로드.

5‑7. 임시 저장소 stash

  • 현재 작업 중인 변경을 잠시 저장:
bashgit stash
  • 저장해 둔 내용을 다시 복구:
bashgit stash pop

→ 급한 버그 수정 들어가서 브랜치를 바꿔야 할 때, 현재 작업을 잠깐 “상자에 넣어두고” 다른 브랜치로 이동할 때 씀.


6. 이렇게 정리해서 보면

  • 기본 흐름: git init / clonegit addgit commitgit push
  • 브랜치 관리: git branch / git checkout -bgit mergegit branch -d / --delete
  • 고급 히스토리 정리: git rebase, interactive rebase, squash
  • 그 밖에 쓰는 것들: git reset, git restore, git stash, git tag, .gitignore, git blame

7. 깃 명령어 및 설명 한 번에 정리 표

카테고리명령어 예시설명
초기 설정git config --global user.name "이름"커밋에 쓰일 이름 설정.
git config --global user.email "이메일"커밋에 쓰일 이메일 설정.
저장소 초기화git init현재 폴더를 Git 저장소로 만듦.
git clone URL원격 저장소를 로컬에 복사(클론).
상태 확인git status현재 수정·추가된 파일 상태 확인.
git log
git log --oneline
커밋 히스토리 보기 (한 줄 요약 형식).
작업 단계git add 파일명
git add .
변경을 Staging Area에 올림.
git commit -m "메시지"Staging에 있는 변경을 커밋으로 저장.
git push origin main로컬 커밋을 원격 main 브랜치에 업로드.
git pull origin main원격 main 브랜치를 로컬에 동기화.
git fetch원격 변경만 가져오고, 자동 병합은 안 함.
브랜치git branch로컬 브랜치 목록 보기.
git branch feature-xxxfeature-xxx 브랜치 생성 (이동 안 함).
git checkout -b feature-xxxfeature-xxx 브랜치 생성 + 바로 이동.
git switch branch명다른 브랜치로 이동.
git merge branch명현재 브랜치에 branch명 브랜치를 병합.
git branch -d branch명이미 병합된 브랜치를 안전하게 삭제.
git branch -D branch명강제로 브랜치 삭제.
git push origin --delete branch명원격 브랜치 삭제.
rebasegit rebase main현재 브랜치를 main 끝에 다시 쌓아 정렬.
git rebase --interactive여러 커밋을 재정렬·통합하는 대화형 rebase.
git merge branch명rebasefast‑forward 병합.
히스토리 수정git reset --hard HEAD~1최근 커밋을 아예 지우고 되돌림(주의 필요).
git commit --amend이전 커밋 메시지를 수정.
이전 상태로git checkout 커밋해시특정 커밋 시점 코드로 이동 (읽기용).
git restore 파일명특정 파일을 마지막 커밋 상태로 되돌림.
stashgit stash현재 작업 중인 변경을 임시 보관.
git stash pop임시로 저장해 둔 변경을 다시 복구.
태그git tag v1.0.0v1.0.0 태그 생성.
git push origin v1.0.0태그를 원격으로 푸시.
git checkout v1.0.0태그가 붙은 커밋으로 이동.
.gitignore.gitignore 파일 작성특정 파일/폴더를 Git에서 무시하도록 설정.
git rm -r --cached .이미 커밋된 파일을 인덱스에서만 제거.
충돌/에러git status충돌 난 파일 및 상태 확인.
git add 충돌난파일충돌 해결 후 Staging에 다시 올림.
git pull origin maingit push 실패 시 원격과 우선 동기화.