Git 명령어 정리 (1편) — 기본 개념, 설정, 커밋, 로그

2026. 5. 26. 15:25·블로그, 컴퓨터/Cheatsheets

git cheatsheet thumbnail

터미널 명령어와 vim 설정을 정리했으니, 이번엔 git입니다. 코드를 짜다 보면 git은 거의 매일 씁니다. 근데 습관적으로 add, commit, push 세 개만 쓰다가, 뭔가 꼬이는 상황이 생기면 갑자기 손이 멈추는 경험을 한 번쯤은 해봤을 것 같습니다.

이 글은 그 상황에서도 어느 정도 대응할 수 있도록, 기본 명령어부터 자주 쓰이는 패턴까지 묶어서 정리한 것입니다.

1편에서는 git의 기본 개념, 초기 설정, 파일을 추적하고 커밋하는 워크플로우, 그리고 히스토리 확인을 다룹니다.


핵심 개념 먼저

git을 처음 쓸 때 헷갈리는 이유 중 하나가, 파일이 어느 상태에 있는지 머릿속에 잘 안 그려지기 때문입니다. git에는 파일이 거치는 세 가지 영역이 있습니다.

Working Directory  →  Staging Area  →  Repository
   (작업 공간)           (대기열)         (저장소)

      git add →              git commit →

Working Directory는 실제로 파일을 편집하는 공간입니다. Staging Area는 다음 커밋에 포함할 변경사항을 모아두는 대기열입니다. git add로 올립니다. Repository는 커밋된 히스토리가 저장되는 곳입니다. git commit으로 확정합니다.

이 흐름을 이해하고 나면 나머지 명령어들이 어느 영역에 작용하는지가 보이기 시작합니다.


초기 설정

git을 처음 설치했다면 사용자 정보를 먼저 등록합니다. 커밋할 때 author 정보로 들어갑니다.

git config --global user.name "이름"
git config --global user.email "이메일"

--global은 전체 시스템에 적용합니다. 프로젝트마다 다른 계정을 쓰고 싶으면 해당 디렉토리에서 --global 없이 씁니다.

자주 쓰는 추가 설정들입니다.

git config --global core.editor nvim          # 기본 에디터 설정
git config --global init.defaultBranch main   # 기본 브랜치 이름 설정
git config --global pull.rebase false         # pull 시 merge 방식 사용
git config --list                             # 현재 설정 전체 확인

저장소 만들기

새로 시작하는 경우

git init              # 현재 디렉토리를 git 저장소로 초기화
git init 프로젝트명    # 디렉토리 생성과 동시에 초기화

git init을 하면 .git 디렉토리가 생깁니다. 여기에 모든 버전 정보가 저장됩니다.

원격 저장소를 가져오는 경우

git clone URL                    # 현재 위치에 저장소 이름으로 폴더 생성
git clone URL 폴더명              # 폴더 이름 지정
git clone URL --depth 1          # 최신 커밋만 (히스토리 없이, 빠름)

기본 워크플로우

상태 확인

git status          # 변경사항 및 스테이징 상태 확인
git status -s       # 짧게 요약해서 출력

git을 쓸 때 가장 자주 치는 명령어 중 하나입니다. 뭔가 하기 전에 git status로 지금 상태를 확인하는 버릇을 들이면 실수가 줄어듭니다.

스테이징 (git add)

git add 파일명            # 특정 파일 스테이징
git add .                # 현재 디렉토리의 모든 변경사항 스테이징
git add -p               # 변경사항을 덩어리(hunk)별로 선택해서 스테이징

git add -p는 파일 전체가 아니라 변경사항 일부만 스테이징할 때 씁니다. 하나의 파일에 여러 독립적인 수정이 섞여 있을 때, 커밋을 의미 단위로 나누고 싶을 때 유용합니다.

커밋 (git commit)

git commit -m "커밋 메시지"       # 메시지와 함께 커밋
git commit                        # 에디터 열어서 메시지 작성
git commit -am "메시지"           # add + commit 한 번에 (추적 중인 파일만)
git commit --amend                # 직전 커밋 수정 (메시지나 파일 변경)
git commit --amend --no-edit      # 직전 커밋에 파일만 추가 (메시지 유지)

--amend는 이미 push하지 않은 커밋에만 씁니다. push한 커밋을 amend하면 히스토리가 바뀌어서 협업 시 문제가 생깁니다.

차이 확인 (git diff)

git diff                 # Working Directory와 Staging Area 비교
git diff --staged        # Staging Area와 최근 커밋 비교
git diff HEAD            # Working Directory와 최근 커밋 비교
git diff 브랜치1 브랜치2  # 두 브랜치 비교

.gitignore

커밋에서 제외할 파일이나 패턴을 등록합니다. 프로젝트 루트에 .gitignore 파일을 만들어서 씁니다.

# 운영체제 생성 파일
.DS_Store
Thumbs.db

# 의존성 디렉토리
node_modules/
__pycache__/
*.pyc

# 환경 설정 파일 (민감 정보)
.env
.env.local

# 빌드 결과물
dist/
build/
*.o
*.out

# IDE 설정
.vscode/
.idea/

이미 추적 중인 파일은 .gitignore에 추가해도 효과가 없습니다. 먼저 추적을 끊어야 합니다.

git rm --cached 파일명       # 파일은 남기고 git 추적만 제거
git rm --cached -r 디렉토리/ # 디렉토리 재귀 적용

히스토리 확인 (git log)

git log                        # 전체 커밋 히스토리
git log --oneline              # 한 줄 요약
git log --oneline --graph      # 브랜치 분기 그래프 포함
git log --oneline --graph --all  # 모든 브랜치 포함
git log -n 10                  # 최근 10개만
git log --author="이름"        # 특정 작성자 커밋만
git log --since="2 weeks ago"  # 기간 필터
git log -- 파일명              # 특정 파일의 변경 히스토리

자주 쓰는 조합은 이렇습니다.

git log --oneline --graph --all --decorate

브랜치, 태그, HEAD 위치가 한눈에 보이는 형태입니다. 매번 치기 귀찮으면 alias로 등록해둡니다.

git config --global alias.lg "log --oneline --graph --all --decorate"
# 이후 git lg 로 사용

특정 커밋 확인

git show 커밋해시           # 해당 커밋의 변경사항 상세 출력
git show HEAD              # 직전 커밋
git show HEAD~2            # 2개 전 커밋

alias 설정

자주 쓰는 명령어를 짧게 등록해두면 편합니다.

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.lg "log --oneline --graph --all --decorate"

등록 후 git st, git lg 처럼 씁니다.


정리 표

명령어 옵션 동작
git config --global 전역 설정
git init — 저장소 초기화
git clone --depth 1 원격 저장소 복제
git status -s 상태 확인 / 요약
git add . -p 전체 / 선택 스테이징
git commit -m -am --amend 커밋 / 수정
git diff --staged 변경사항 비교
git log --oneline --graph --all 히스토리 확인
git show HEAD~n 특정 커밋 상세
git rm --cached -r git 추적 제거

2편에서는 브랜치, 원격 저장소, 되돌리기(reset/revert/restore), stash를 정리합니다.

반응형
저작자표시 비영리 변경금지 (새창열림)

'블로그, 컴퓨터 > Cheatsheets' 카테고리의 다른 글

Docker 명령어 정리 (1편) — 개념, 이미지, 컨테이너  (0) 2026.05.27
Git 명령어 정리 (2편) — 브랜치, 원격, 되돌리기, stash  (0) 2026.05.26
Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인  (0) 2026.05.25
Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초  (0) 2026.05.25
Vim 명령어 정리 (2편) — 검색/치환, Visual 모드, 분할 화면, 설정  (0) 2026.05.24
'블로그, 컴퓨터/Cheatsheets' 카테고리의 다른 글
  • Docker 명령어 정리 (1편) — 개념, 이미지, 컨테이너
  • Git 명령어 정리 (2편) — 브랜치, 원격, 되돌리기, stash
  • Neovim 설정 정리 (2편) — lazy.nvim, LSP, 주요 플러그인
  • Neovim 설정 정리 (1편) — init.lua 구조와 Lua 기초
생각사람
생각사람
지극히 사적인 연구실
  • 생각사람
    생각사람의 별장
    생각사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (207) N
      • 금융 (57)
        • 주식 공부 (11)
        • 파생상품 입문 (17)
        • 파생상품 기초 (15)
        • 파생상품 실전 (14)
      • 블로그, 컴퓨터 (83) N
        • 프로그래밍 (16)
        • DevOps (8)
        • AI, RL, ML, ... (5)
        • 애드센스, SEO (23)
        • 임베디드 (3)
        • 컴퓨터 관련 (7)
        • Cheatsheets (21) N
      • 다른 공부들 (67)
        • 읽고 쓰기 (18)
        • 수학 (15)
        • 물리 (9)
        • 사진 공부 (25)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    CheatSheet
    cmake
    깃허브
    독후감
    선물 옵션
    Kreyszig
    양자역학
    스트랭글
    GIT
    c++
    스트래들
    구글 애드센스
    github
    version control
    슈뢰딩거 방정식
    프로그래밍
    웹크롤러
    코딩
    c
    벡터
    옵션 투자
    옵션
    행렬
    AI
    공업수학
    선형대수학
    깃
    소니 a6000
    오펜하이머
    파생상품
  • hELLO· Designed By정상우.v4.10.6
생각사람
Git 명령어 정리 (1편) — 기본 개념, 설정, 커밋, 로그
상단으로

티스토리툴바