
터미널 명령어와 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 |