로컬 저장소 초기화

GitBeginner
지금 연습하기

소개

이 실습에서는 Git 을 사용한 버전 관리의 첫걸음을 내딛습니다. 일반 디렉터리를 Git 저장소로 변환하고, 시간에 따른 파일 변경 사항을 추적하는 방법을 배웁니다.

이제 평범한 폴더가 버전 관리되는 프로젝트로 바뀝니다. Git 은 기록, 메타데이터, 참조를 저장하는 숨김 .git 디렉터리를 만들어 이 작업을 수행합니다.

이 숨김 디렉터리는 저장소의 내부 데이터베이스입니다. 눈에 보이는 파일은 프로젝트 콘텐츠이고, .git은 Git 이 버전과 커밋 간의 관계를 기억하는 데 사용하는 내부 구조입니다.

이 과정은 다음 세 가지 주요 단계로 진행됩니다.

  • 초기화: 저장소를 설정합니다.
  • 스테이징: 저장할 파일을 준비합니다.
  • 커밋: 파일의 스냅샷을 저장소 기록에 저장합니다.

이 실습을 마치면 첫 번째 파일을 커밋한 로컬 Git 저장소를 갖게 됩니다.

프로젝트 디렉터리 project_x 만들기

이 단계에서는 프로젝트 파일을 저장할 새 디렉터리를 만듭니다. Git 에서는 일반적으로 하나의 디렉터리 안에 저장소가 포함됩니다.

먼저 터미널을 엽니다. 현재 /home/labex/project 디렉터리에 있습니다. mkdir 명령을 사용하여 project_x라는 새 디렉터리를 만듭니다.

다음 명령을 실행합니다.

mkdir project_x

이제 cd 명령을 사용하여 새 디렉터리로 이동합니다.

cd project_x

Git 을 초기화하려는 디렉터리 안에 있어야 합니다. pwd 명령으로 현재 위치를 확인할 수 있습니다.

pwd

출력에 /home/labex/project/project_x가 표시되어야 합니다.

git init 으로 이 디렉터리 안에서 git 초기화하기

이 단계에서는 일반 디렉터리를 Git 저장소로 변환합니다. 이 과정을 "초기화"라고 합니다.

project_x 디렉터리 안에서 다음 명령을 실행합니다.

git init

다음과 비슷한 출력이 표시되어야 합니다.

Initialized empty Git repository in /home/labex/project/project_x/.git/

이 명령은 .git이라는 숨김 하위 디렉터리를 만듭니다. 이 숨김 디렉터리에는 Git 이 프로젝트를 추적하는 데 필요한 모든 메타데이터와 객체 데이터베이스가 들어 있습니다. .git 안의 내용을 수정할 필요는 없지만, 이 디렉터리가 생성된다는 점은 알아두면 좋습니다.

따라서 git init은 어떤 항목을 "업로드"하거나 그 자체로 기록을 생성하지 않습니다. 단지 Git 이 앞으로 생성될 스냅샷을 로컬에서 추적할 수 있도록 디렉터리를 준비합니다.

숨김 파일을 포함한 모든 파일을 나열하여 .git의 존재를 확인할 수 있습니다.

ls -a

목록에 .git이 표시되어야 합니다.

readme.txt 파일 만들기

이 단계에서는 추적할 파일을 만듭니다. 빈 저장소는 그다지 유용하지 않으므로 콘텐츠를 추가합니다.

readme.txt라는 간단한 텍스트 파일을 만듭니다. echo 명령을 사용하면 파일을 만들면서 동시에 텍스트를 입력할 수 있습니다.

다음 명령을 실행합니다.

echo "This is my first git project" > readme.txt

이 명령은 "This is my first git project"라는 콘텐츠가 들어 있는 readme.txt를 만듭니다.

파일이 생성되었는지 확인합니다.

ls

목록에 readme.txt가 표시되어야 합니다.

git status 로 저장소 상태 확인하기

이 단계에서는 저장소의 상태를 확인합니다. Git 은 생성한 모든 파일을 자동으로 추적하지 않으므로, 파일을 추적하도록 직접 지정해야 합니다.

git status는 Git 에서 가장 유용한 명령 중 하나입니다. 이 명령은 추적 중인 파일, 수정된 파일, 커밋할 준비가 된 스테이징된 파일을 보여줍니다.

다음 명령을 실행합니다.

git status

다음과 비슷한 출력이 표시되어야 합니다.

On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
 readme.txt

nothing added to commit but untracked files present (use "git add" to track)

Untracked files 아래에 readme.txt가 표시되는지 확인합니다. 이는 Git 이 파일을 인식했지만 아직 파일의 변경 사항을 추적하지 않는다는 뜻입니다.

여기서 Git 의 중요한 개념을 알 수 있습니다. 파일이 작업 디렉터리에 존재하더라도 아직 버전 관리 대상이 아닐 수 있습니다. Git 은 파일의 존재를 알고 있지만, 저장소 기록에는 아직 포함하지 않았습니다.

git add 로 파일을 캐시 영역 (스테이징 영역) 에 추가하기

이 단계에서는 파일을 "스테이징 영역"(index 라고도 함) 으로 이동합니다. 스테이징 영역은 변경 사항 집합을 공식 기록에 커밋하기 전에 스냅샷으로 준비하는 곳입니다.

스테이징 영역은 Git 의 가장 중요한 개념 중 하나입니다. 스테이징 영역은 작업 디렉터리와 저장소 기록 사이에 있으며, 다음 커밋에 포함할 변경 사항을 정확하게 선택할 수 있게 합니다.

readme.txt를 추적하고 스테이징하려면 git add 명령을 사용합니다.

git add readme.txt

이제 상태를 다시 확인하여 변경 사항을 확인합니다.

git status

이제 다음과 비슷한 출력이 표시되어야 합니다.

On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
 new file:   readme.txt

이제 Changes to be committed 아래에 readme.txt가 표시되는지 확인합니다. 이는 파일이 스테이징되어 커밋할 준비가 되었다는 뜻입니다.

이 때문에 Git 의 작업 흐름을 흔히 세 가지 상태로 설명합니다. 파일은 작업 트리에 있고, 변경 사항은 스테이징 영역에 있으며, 스냅샷은 커밋 기록에 저장됩니다.

git commit -m 으로 파일 커밋하기

이 단계에서는 현재 스테이징 영역에 있는 변경 사항을 저장소 기록에 영구적으로 저장합니다. 이 작업을 "커밋"이라고 합니다.

커밋은 프로젝트의 스냅샷을 저장하며, 무엇이 변경되었는지 설명하는 메시지가 필요합니다. 명령줄에서 메시지를 직접 지정하기 위해 -m 옵션을 사용합니다.

다음 명령을 실행하여 변경 사항을 커밋합니다.

git commit -m "Initial commit"

커밋이 완료되었음을 확인하는 다음과 비슷한 출력이 표시되어야 합니다.

[master (root-commit) 1a2b3c4] Initial commit
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt

이제 마지막으로 상태를 확인합니다.

git status

다음과 같은 출력이 표시되어야 합니다.

On branch master
nothing to commit, working tree clean

이는 작업 디렉터리의 내용이 저장소의 최신 커밋과 일치한다는 뜻입니다. 이제 첫 번째 버전을 성공적으로 저장했습니다.

요약

이 실습에서는 로컬 Git 저장소를 성공적으로 초기화했습니다. 다음 작업을 수행하는 방법을 배웠습니다.

  1. 프로젝트 디렉터리 만들기
  2. git init으로 Git 초기화하기
  3. 새 파일 만들기
  4. git status로 저장소 상태 확인하기
  5. git add로 파일 스테이징하기
  6. git commit으로 파일을 저장소 기록에 커밋하기

이 명령들은 Git 으로 작업할 때 매일 사용하는 기본 명령입니다. 이제 변경 사항을 추적하고, 버전을 저장하고, 프로젝트 기록을 관리할 수 있습니다.