Git의 스테이징 영역

Azhar Bashir Khan 2023년6월20일
Git의 스테이징 영역

이 튜토리얼에서는 Git의 스테이징 영역에 대해 알아봅니다.

버전 제어 시스템인 Git은 프로젝트 디렉토리에 대한 변경 내역을 유지 관리합니다. Git은 커밋을 사용하여 변경 사항을 추적합니다.

Git에는 세 가지 내부 관리 시스템이 있으며 그 중 하나는 스테이징 영역입니다. 스테이징 영역은 다음 커밋에서 저장하려는 파일 버전을 추가할 수 있는 초안 공간과 같습니다.

git add 명령을 사용하여 스테이징 영역에 파일을 추가합니다. 이제 예를 들어 설명하겠습니다.

Git의 스테이징 영역

Git은 협업 개발 환경에서 프로젝트 디렉토리의 파일에 대한 변경 사항을 추적하는 데 사용됩니다.

Git에는 트리라고도 하는 세 가지 내부 관리 시스템(작업 디렉터리 트리, 스테이징 인덱스 트리 및 커밋 기록 트리)이 있습니다.

이러한 트리는 파일의 상태와 Git 리포지토리의 변경 사항을 관리하는 데 사용되는 복잡한 데이터 구조입니다. 스테이징 인덱스 트리라고도 하는 스테이징 영역은 작업 디렉터리 변경 사항을 추적합니다.

git add 명령은 작업 디렉토리에서 스테이징 영역으로 파일 버전을 복사하는 데 사용됩니다. git add 명령은 작업 트리에서 찾은 현재 콘텐츠를 사용하여 인덱스 또는 스테이징 영역을 업데이트합니다.

스테이징 영역에는 작업 트리 내용의 스냅샷이 있습니다. 이 스냅샷은 다음 커밋의 내용으로 찍은 것입니다.

나중에 Git 리포지토리에 변경 사항을 커밋하려면 git commit 명령을 사용해야 합니다.

git commit 명령은 git add 명령으로 생성된 스냅샷을 사용하여 커밋 히스토리 트리에 커밋을 생성합니다. git commit 명령은 커밋 기록 트리에 있는 영구 스냅샷에 변경 사항을 추가합니다.

스테이징 영역은 복잡한 내부 캐싱 메커니즘입니다. git ls-files 명령을 사용하여 스테이징 영역 또는 인덱스 상태를 볼 수 있습니다.

Git 저장소에서 git ls-files 명령을 실행할 수 있습니다.

$ git ls-files -s .
100644 bab2a0adb8921f504cb0521bc00b8dde22ee92a4 0	mynotes.txt

mynotes.txt 파일이 스테이징 영역 트리의 일부임을 알 수 있습니다.

git ls-files 명령에 제공되는 -s 또는 --stage 옵션은 Staging Index의 파일에 대한 추가 메타데이터를 표시합니다. 메타데이터는 스테이지된 콘텐츠의 모드 비트, 오브젝트 이름, 스테이지 번호입니다.

두 번째 값 bab2a0adb8921f504cb0521bc00b8dde22ee92a4는 표준 Git 객체 SHA-1 해시입니다. 파일 내용의 해시입니다.

git add 명령을 사용하여 mynotes.txt 파일의 수정 사항을 스테이징 영역에 추가할 수 있습니다.

$ git add mynotes.txt
$ git status
On branch main Changes to be committed:
(use "git reset HEAD ..." to unstage)
modified: mynotes.txt

git status 명령의 출력에 표시된 것처럼 mynotes.txt 파일에 대한 수정 사항은 git add 명령에 의해 스테이징 인덱스로 승격됩니다.

다음과 같이 mynotes.txt 파일에 대한 스테이징 영역 또는 인덱스의 상태를 다시 확인합니다.

$ git ls-files -s mynotes.txt
100644 067478ae06e267263ea7ed849ef358f911628668 0	mynotes.txt

mynotes.txt 파일의 SHA 개체가 bab2a0adb8921f504cb0521bc00b8dde22ee92a4에서 067478ae06e267263ea7ed849ef358f911628668로 업데이트된 것을 볼 수 있습니다.

이상으로 Git의 스테이징 영역 트리 또는 인덱스에 대해 알아보았습니다.

자세한 내용은 다음을 방문하십시오.

  1. git-추가
  2. 변경사항 저장

관련 문장 - Git Add