[Git] 내 로컬 환경에서 버전 관리하기

용어

 

  • 깃(Git)

(Git) 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한

분산 버전 관리 시스템이다. (위키백과)

 

Git을 이용하면 자신의 Local 환경에서 파일을 버전별로 관리할 수 있으며,

깃 프로젝트를 지원하는 웹 호스팅 서비스인 GitHub를 이용함으로써 원격 저장소에 이 파일을 저장하고 공유할 수 있다.

 

 

  • 저장소(repository)

Git이 저장하는 모든 변경사항은 우리가 '저장소'로 만든 곳에서 이루어진다.

이중 내 디바이스 환경에 위치한 로컬 저장소는 git init 명령을 통해 생성되며, .git 폴더를 통해 관리된다.

 

 

  • 커밋(Commit)

깃 저장소에 저장되는 파일에 대한 스냅샷의 기록. 각 커밋에 기록된 스냅샷은 '버전'이라고도 한다.

커밋은 변경 사항이 생길 때마다 전체를 복제하는 것이 아니라, 변경된 사항만을 저장한다.

따라서 커밋은 상속의 형태를 가지며, 새로 생성된 커밋은 이전 커밋(부모 커밋)을 가리킨다.

 


 

버전 만들기

 

 

출처: https://git-scm.com

 

Git에서 관리하는 파일의 상태는 다음과 같다.

 

  1. Untracked file: 저장소에 저장된 적이 없는 파일 (이러한 파일을 추적되지 않는다는 의미에서 Untracked라고 한다.)
  2. Unmodified: 추적 중인, 수정 사항이 없는 파일 (commit 이후 파일의 상태)
  3. Modified: 추적 중인, 수정 사항이 있는 파일 (commit 이후 발생한 수정 사항)
  4. Staged: git add 명령을 통해 stage에 오른 파일

Git의 버전 생성 흐름은 다음과 같다.


"최초 생성 시 파일은 Untracked 상태가 되며, 이를 git add 명령을 통해 스테이지에 올리면 Staged 상태가 된다.

git commit 명령을 통해 Commit하여 스냅샷을 생성하면 이 파일은 Unmodified 상태가 되며, 이후 파일을 수정하면 Modified 상태가 된다."


 

파일들이 현재 어떤 상태에 있는지는 git status 명령을 통해 확인할 수 있다.

 

 

스테이지에 오른(Staged) b.txt

추적 중인, 수정된(Modified) a.txt

추적 중이지 않은(Untracked) c.txt

 


작업 되돌리기

 

특정 상태의 파일을 이전 상태로 되돌리기 위해서는 다음과 같은 명령을 사용한다.

 

  • Modified → Unmodified: git checkout -- {파일명}
  • Staged → Unstaged: git reset HEAD {파일명}
  • Commited → Unstaged: git reset HEAD^