01-02 기본 명령어와 워크플로우
매일 쓰는 Git 명령어 — 변경을 만들고, 담고, 기록하고, 확인하는 일상 사이클.
매일 쓰는 Git 명령어 — 변경을 만들고, 담고, 기록하고, 확인하는 일상 사이클.
목표: 문서 없이 add → commit → push 사이클을 자유롭게 수행
🔄 일상 워크플로우 한눈에
graph LR
EDIT["✏️ 편집"] --> ADD["git add<br/>(스테이징)"]
ADD --> COMMIT["git commit<br/>(기록)"]
COMMIT --> PUSH["git push<br/>(공유)"]
STATUS["git status / diff<br/>(언제든 확인)"]
🔍 git status — 현재 상태
git status # 변경 파일 + 스테이징 + 브랜치 정보
git status -s # 짧은 형식
git status -sb # 짧게 + 브랜치
-s 출력 읽는 법 (좌측=스테이징, 우측=작업 디렉토리):
M file1.txt # 수정됨, 미스테이징
M file2.txt # 수정됨, 스테이징됨
MM file3.txt # 스테이징 후 또 수정
A file4.txt # 새로 추가(스테이징)
?? file5.txt # untracked (추적 안 됨)
D file6.txt # 삭제됨
➕ git add — 스테이징
git add file.txt # 특정 파일
git add . # 현재 폴더 이하 전체
git add -A # 저장소 전체(삭제 포함)
git add *.js # 패턴
git add -u # 추적 중인 파일의 변경만
git add -p # 변경을 조각(hunk) 단위로 선별 ⭐
[!tip]
git add -p(patch 모드) 한 파일의 여러 변경 중 관련된 것만 골라 담아 커밋을 논리 단위로 분리한다.
y담기 /n건너뛰기 /s더 쪼개기 /e직접 편집 /q종료
💾 git commit — 기록
git commit -m "feat: 로그인 추가" # 한 줄 메시지
git commit # 에디터로 제목+본문
git commit -am "fix: 버그" # 추적 파일 add + commit (untracked 제외)
git commit --amend # 마지막 커밋 수정
git commit --amend --no-edit # 메시지 유지, 내용만 추가
좋은 커밋의 조건:
- 하나의 논리적 변경 = 하나의 커밋
- 제목은 50자 이내, 명령형 (“추가한다” 형태)
- 빌드가 깨지지 않는 상태로 커밋
[!warning]
--amend주의 마지막 커밋을 고치는 게 아니라 해시가 바뀐 새 커밋으로 교체한다. 이미 push 한 커밋엔 사용하지 말 것(강제 push 필요).
📜 git log — 히스토리 보기
git log # 기본
git log --oneline # 한 줄씩
git log --oneline --graph --all # 그래프로 전체 브랜치 ⭐
git log -3 # 최근 3개
git log --stat # 파일별 변경량
git log -p file.txt # 특정 파일 변경 내역
git log --author="Jongmin" # 작성자 필터
git log --grep="로그인" # 메시지 검색
git log --since="1 week ago" # 기간 필터
출력 예시 (--oneline):
9f3a1c2 (HEAD -> main) feat: 로그인 추가
a1b2c3d fix: 널 체크
4d5e6f7 (origin/main) docs: README 수정
🔬 git diff — 변경 비교
git diff # 작업 디렉토리 vs 스테이징 (아직 안 담은 변경)
git diff --staged # 스테이징 vs 마지막 커밋 (담긴 변경)
git diff HEAD # 작업 디렉토리 vs 마지막 커밋 (전부)
git diff --stat # 변경량 요약
git diff --name-only # 바뀐 파일 이름만
graph LR
WD["작업 디렉토리"] -.->|"git diff"| STAGE["스테이징"]
STAGE -.->|"git diff --staged"| HEAD["마지막 커밋"]
WD -.->|"git diff HEAD"| HEAD
🗑️ 파일 삭제·이동
git rm file.txt # 파일 삭제 + 스테이징
git rm --cached file.txt # 추적만 해제(파일은 유지) — .gitignore 적용 시
git mv old.txt new.txt # 이름 변경(= mv + add)
⚡ 자주 쓰는 별칭
git config --global alias.st status
git config --global alias.lg "log --oneline --graph --all"
git config --global alias.last "log -1 HEAD"
# 사용: git st / git lg / git last
📋 체크리스트
-
git status -s출력 해석 -
git add -p로 부분 스테이징 - 논리 단위로
git commit -
--amend의 동작과 주의점 -
git log --oneline --graph --all읽기 -
git diffvs--staged차이 -
git rm --cached용도 - 별칭 설정
🔗 관련 노트
- 01-01-Git-개념과-동작원리 — 이전: 영역 개념
- 01-03-브랜치와-병합 — 다음: 브랜치
- Git-상세-가이드 — 옵션 백과
- 02-03-커밋-컨벤션과-시맨틱-버저닝 — 커밋 메시지 규칙
마지막 업데이트: 2026-06-02