git add
한 줄 요약
변경사항을 Stage 영역에 추가하여 다음 commit 준비
선행 지식
- Stage와 Working Directory - Git의 작업 영역 이해
- Commit - 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 | 이 파일의 나머지 모두 추가 |
s | hunk를 더 작게 분할 |
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/.gitkeepadd를 깜빡하고 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에서 작업
관련 명령어
- git status - 현재 상태 확인
- git commit - Stage의 내용을 commit
- git restore - Stage에서 내리기
- git diff - 변경사항 비교
더 알아보기
- Stage와 Working Directory - Git의 세 영역
- Commit - commit의 개념
- 변경사항 저장하기 - 전체 워크플로우