# 현재 상태 확인git status# 간단한 형태로 상태 확인git status -sgit status --short# 브랜치 정보와 함께 상태 확인git status -b
변경사항 확인
# 워킹 디렉토리와 스테이징 영역 비교git diff# 스테이징 영역과 마지막 커밋 비교git diff --stagedgit diff --cached# 워킹 디렉토리와 마지막 커밋 비교git diff HEAD# 특정 파일만 비교git diff file.txtgit diff --staged file.txt
파일 추가 (Staging)
기본 추가 명령어
# 특정 파일 추가git add file.txt# 여러 파일 추가git add file1.txt file2.txt# 현재 디렉토리의 모든 변경사항 추가git add .# 전체 프로젝트의 모든 변경사항 추가 (삭제 포함)git add -Agit add --all# 수정된 파일만 추가 (새 파일 제외)git add -ugit add --update
패턴 매칭으로 추가
# 확장자별 추가git add *.jsgit add *.css# 디렉토리별 추가git add src/git add docs/# 와일드카드 사용git add "*.txt" # 모든 하위 디렉토리의 txt 파일
대화형 추가
# 대화형 모드로 파일 선택git add -igit add --interactive# 파일 일부분만 추가 (hunk 단위)git add -p file.txtgit add --patch file.txt# 새 파일도 패치 모드로 추가git add -N file.txt # 추적 시작git add -p file.txt # 패치 모드로 추가
스테이징 영역 관리
스테이징에서 제거
# 특정 파일을 스테이징에서 제거 (파일은 유지)git reset HEAD file.txtgit restore --staged file.txt# 모든 파일을 스테이징에서 제거git reset HEADgit restore --staged .# 특정 커밋으로 스테이징 영역 리셋git reset commit-hash
워킹 디렉토리 변경사항 취소
# 특정 파일의 변경사항 취소git checkout -- file.txtgit restore file.txt# 모든 변경사항 취소git checkout -- .git restore .# 특정 커밋의 상태로 파일 복원git checkout commit-hash -- file.txtgit restore --source=commit-hash file.txt
커밋
기본 커밋
# 기본 커밋 (에디터 열림)git commit# 메시지와 함께 커밋git commit -m "커밋 메시지"# 추가와 커밋 동시에 (추적 중인 파일만)git commit -am "수정사항 커밋"# 빈 커밋 (파일 변경 없이)git commit --allow-empty -m "빈 커밋"
커밋 메시지 작성
# 여러 줄 커밋 메시지git commit -m "제목: 간단한 요약상세한 설명을 여기에 작성합니다.- 변경 사항 1- 변경 사항 2"# 템플릿 사용git config --global commit.template ~/.gitmessage
커밋 수정
# 마지막 커밋 메시지 수정git commit --amend -m "새로운 커밋 메시지"# 마지막 커밋에 파일 추가git add forgotten-file.txtgit commit --amend --no-edit# 마지막 커밋의 작성자 정보 수정git commit --amend --author="New Author <email@example.com>"
스태시 (임시 저장)
기본 스태시 사용
# 현재 작업 임시 저장git stashgit stash save "작업 중인 기능"# 메시지와 함께 스태시git stash push -m "로그인 기능 작업 중"# 추적되지 않는 파일도 포함git stash -ugit stash --include-untracked# 무시된 파일까지 포함git stash -agit stash --all
스태시 관리
# 스태시 목록 보기git stash list# 스태시 내용 확인git stash showgit stash show -p stash@{1}# 스태시 적용git stash apply # 가장 최근 스태시git stash apply stash@{1} # 특정 스태시# 스태시 적용 후 삭제git stash popgit stash pop stash@{1}# 스태시 삭제git stash drop stash@{1}git stash clear # 모든 스태시 삭제
특별한 스태시 사용법
# 특정 파일만 스태시git stash push file.txt# 스테이징된 변경사항만 스태시git stash --staged# 스태시를 새 브랜치로 적용git stash branch new-branch stash@{1}
파일 무시하기
.gitignore 설정
# .gitignore 파일 생성touch .gitignore# 일반적인 .gitignore 패턴echo "node_modules/" >> .gitignoreecho "*.log" >> .gitignoreecho ".env" >> .gitignoreecho "dist/" >> .gitignore# 전역 .gitignore 설정git config --global core.excludesfile ~/.gitignore_global