git add

한 줄 요약

변경사항을 Stage 영역에 추가하여 다음 commit 준비

선행 지식

기본 사용법

git add <파일>

지정한 파일의 변경사항을 Stage에 올립니다.

주요 옵션

옵션설명예시
<파일>특정 파일 추가git add index.html
.현재 폴더의 모든 변경사항git add .
-A / --all전체 저장소의 모든 변경사항git add -A
-p / --patch변경사항 일부만 선택git add -p
-u / --update추적 중인 파일만 추가git add -u

실제 예제

특정 파일 추가

# 하나의 파일
git add index.html
 
# 여러 파일
git add index.html style.css app.js
 
# 특정 확장자
git add *.js
 
# 특정 폴더
git add src/

모든 변경사항 추가

# 현재 폴더 기준
git add .
 
# 저장소 전체 기준 (권장)
git add -A

. vs -A의 차이

  • git add .: 현재 폴더와 하위 폴더만
  • git add -A: 저장소 전체 (삭제된 파일 포함)

대부분의 경우 -A를 사용하는 것이 안전합니다.

대화형 추가 (일부만 선택)

git add -p

파일의 변경사항을 hunk(덩어리) 단위로 보여주고, 각각 추가할지 선택할 수 있습니다:

@@ -1,3 +1,4 @@
 line 1
+new line      # 이 부분을 추가할까요?
 line 2
 line 3
Stage this hunk [y,n,q,a,d,e,?]?
동작
y이 hunk 추가
n이 hunk 건너뛰기
q종료 (나머지 모두 건너뛰기)
a이 파일의 나머지 모두 추가
shunk를 더 작게 분할

add 전후 상태 확인

# add 전
$ git status
Changes not staged for commit:
        modified:   app.js     # 빨간색
 
# add 후
$ git add app.js
$ git status
Changes to be committed:
        modified:   app.js     # 초록색

add 취소하기

Stage에 올린 파일을 다시 내리려면:

# 특정 파일
git restore --staged app.js
 
# 모든 파일
git restore --staged .

git restore 참고

자주 하는 실수

모든 파일을 add 했는데 불필요한 파일이 포함됨

예방: .gitignore 파일 사용

# .gitignore에 추가
echo "node_modules/" >> .gitignore
echo ".env" >> .gitignore

이미 추가한 경우:

git restore --staged 불필요한파일

빈 폴더가 추가되지 않음

Git은 빈 폴더를 추적하지 않습니다.

해결: 폴더에 .gitkeep 파일 생성

touch empty-folder/.gitkeep
git add empty-folder/.gitkeep

add를 깜빡하고 commit 시도

$ git commit -m "메시지"
nothing to commit, working tree clean

해결:

git add .
git commit -m "메시지"

또는 한 번에:

git commit -am "메시지"  # 추적 중인 파일만

add + commit 한 번에

이미 추적 중인 파일이라면:

git commit -am "커밋 메시지"

주의

-a 옵션은 새로 만든 파일(untracked)은 포함하지 않습니다. 새 파일은 반드시 git add를 해야 합니다.

작업 흐름

파일 수정 ──▶ git add ──▶ git commit
     │            │            │
     │            │            └─ 저장소에 기록
     │            │
     │            └─ Stage에 올림 (commit 준비)
     │
     └─ Working Directory에서 작업

관련 명령어

더 알아보기