[Git]Git 개념에 대해서 알아보자

🦥 About Git

Git

리눅스 커널 관리를 위해 리눅스 토발즈 및 리눅스 개발 커뮤니티에서 개발하였다. 2005년 4월에 개발을 시작하여 2005년 7월 11일에 첫 버전을 출시하였다.

  • 목표
    • 빠른 속도
    • 단순한 구조
    • 수천 개의 동시다발적인 브랜치가 가능한 비선형적인 구조
    • 완벽한 분산
    • 대형 프로젝트에서도 유용할 것

Git의 파일 상태

Git은 다음 세가지 상태로 파일을 관리한다.

  • Committed
    • 로컬 데이터베이스(저장소; Repository)에 안전하게 저장되었다는 뜻이다.
  • Modified
    • 파일이 변경되었지만 아직 로컬 데이터베이스에 저장되지 않았다는 뜻이다.
  • Staged
    • 로컬 데이터베이스에 저장할 파일임을 표시했다는 뜻이다.
    • 다음에 커밋을 수행할 때 Staged로 표시된 파일의 변경 내용이 저장될 것이다.

Git 프로젝트의 단계

Git 프로젝트는 다음 세 가지 단계로 관리된다.

  • .git Directory
    • 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳.
    • 즉 변경 내력과 그 내용이 저장된다.
    • 원격 저장소를 clone 할 때 생성됨.
  • Working Directory
    • 특정 버전을 체크아웃(checkout)하면, .git 디렉토리에 있는 압축된 데이터베이스에서 파일을 가져와서 작업 디렉토리를 만든다.
  • Staging Area
    • .git 디렉토리에 존재하는 단순한 파일이다.
    • commit 할 파일의 정보(스냅샷이라 부른다)를 담고 있다.
    • git commit을 실행하면 이 스냅샷에 기록된 파일을 저장소에 보관하는 것이다.
    • 커밋을 한 후에는 Staging Area는 새 스냅샷을 준비한다.
    • Staging Area는 인덱스라는 이름으로도 부르지만, Staging Area 가 표준 이름으로 사용되는 추세이다.

Git 파일의 상태 변화

다음은 Git 명령에 따른 파일의 상태 변화를 보여준다.

         Working Directory         | Staging Area | .git Directory(Repository)
[Untracked] [Unmodified] [Modified]|[   Staged   ]|[  Committed  ]    
-----------------------------------|--------------|---------------------------
    +------------------------------------->>                      : git add
                              +----------->>                      : git add
                                           +------------->>       : git commit
                  <<-----------------------+                  
                  +---------->>                                   : 파일 편집
    <<------------+                                               : 파일 삭제
  • Untracked - 작업 디렉토리에 새로 파일을 추가한 경우. 아직 스냅샷이나 Staging Area에 등록되지 않은 파일. 즉 git의 버전 관리 대상이 아닌 상태.
  • Unmodified - 마지막 커밋(commit) 이후에 아무것도 수정하지 않은 상태.
  • Modified - 파일의 내용을 변경한 상태.
  • Staged - 다음 커밋에서 저장하도록 Staging Area에 등록되고 표시된 상태.

Categories:

Updated:

Leave a comment