Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

Git 'changes not staged for commit' 메시지 이해와 해결 방법

Git에서 커밋(commit)을 생성하기 전에, 변경한 파일들을 해당 커밋에 반드시 추가해야 합니다. 파일을 커밋에 추가하기 전에 git status 명령어를 실행하면 출력 결과에 changes not staged for commit(커밋을 위해 스테이징되지 않은 변경 사항)이라는 메시지가 표시됩니다.

이 가이드에서는 이 메시지가 무엇을 의미하는지, 왜 중요한지 살펴보고, 커밋에 추가할 파일을 스테이징하는 방법을 실제 예제를 통해 단계별로 설명합니다.

'changes not staged for commit' 메시지란?

Git 저장소의 파일은 크게 세 가지 상태 중 하나로 존재합니다. 무시됨(ignored), 스테이징 영역(staging area)에 있음, 또는 커밋의 일부입니다.

무시된 파일은 Git 저장소의 기록에 포함되지 않습니다. 스테이징 영역에 있는 파일들은 다음 커밋에 추가될 예정인 파일들입니다.

스테이징 영역이 중요한 이유는 어떤 파일을 커밋에 포함하고 제외할지 직접 선택할 수 있기 때문입니다. 커밋을 생성하기 전이라면 언제든지 스테이징 영역에서 파일을 자유롭게 추가하거나 제거할 수 있습니다.

즉, 스테이징 영역은 일종의 임시 정리 공간 역할을 합니다. 커밋에 빠뜨린 파일이 있다는 것을 깨닫게 되면 해당 파일을 스테이징에 추가하면 됩니다. 그리고 모든 변경 사항을 스테이징 영역에 담았다는 확신이 들면 그때 커밋을 생성하면 됩니다.

예제 시나리오

이 메시지를 확인하려면 먼저 Git 저장소의 파일을 변경해야 합니다. README.md라는 빈 파일이 있는 Git 저장소가 있다고 가정해 보겠습니다. 파일 내용을 다음과 같이 변경해 보겠습니다.

# Example Repo

저장소의 파일을 변경했습니다. 이제 git status 명령어를 실행하여 변경된 모든 파일의 요약을 확인해 보겠습니다.

git status

이 명령어가 표시하는 내용은 다음과 같습니다.

On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

    modified:   README.md

Git 명령줄은 현재 master 브랜치에 있으며, 현재 브랜치가 원격 브랜치(origin/master)와 최신 상태로 동기화되어 있음을 알려줍니다. 그리고 하나의 파일인 README.md가 변경되었지만, 아직 스테이징 영역이나 커밋에 추가되지 않았습니다. 즉, 작업 디렉토리가 수정된 상태입니다.

이 메시지를 없애려면 README.md 파일을 스테이징 영역에 추가해야 합니다. git add 명령어를 사용하면 됩니다.

git add README.md

이 명령어를 사용하면 커밋에 포함할 파일을 선택적으로 지정할 수 있습니다. 다음으로, 현재 스테이징 영역에 있는 변경된 파일들로 커밋을 생성해 보겠습니다.

git commit -m "docs: Update README.md"

이렇게 하면 스테이징 영역에 추가한 모든 변경 사항이 반영된 저장소의 현재 상태가 기록됩니다. 원격 저장소와 연동된 프로젝트에서 작업 중이라면, 커밋 후 원격 저장소에 푸시(push)하는 것이 좋습니다.

git push

이제 변경 사항이 로컬 및 원격 저장소 모두에 성공적으로 반영되었습니다.

다시 한번 브랜치에서 git status를 실행해 결과를 확인해 보겠습니다.

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

이번에는 커밋이나 스테이징 영역에 추가되지 않은 변경 사항이 더 이상 없다고 표시됩니다. 즉, 저장소 변경 작업을 성공적으로 마친 것입니다. 이제 저장소에는 README.md에 대한 변경 사항을 담은 새로운 커밋이 하나 추가되었습니다.

결론

'changes not staged for commit'(커밋을 위해 스테이징되지 않은 변경 사항) 메시지는 git status 명령어를 실행했을 때, 변경되었지만 아직 스테이징 영역에 추가되지 않은 파일이 존재할 경우 표시됩니다.

이것은 오류 메시지가 아니라, 스테이징 영역이나 커밋에 아직 포함되지 않은 변경된 파일이 있다는 단순한 알림입니다. 파일을 스테이징 영역에 추가한 뒤 커밋하고 저장소에 반영하면 이 메시지는 자연스럽게 사라집니다. 이제 여러분도 전문 개발자처럼 이 Git 메시지를 자신 있게 처리할 수 있습니다!