[Git] 기본 용어

Sam Kim·2022년 7월 6일
1

Version Control Systems

목록 보기
2/2
post-thumbnail

Git의 기본 용어 Repository, Checkout, Working Directory, Staging Area, git directory, Commit, Tag, Push, Pull, Branch, Merge 등에 대해 알아봅니다.

Repository (저장소)

  • (일반적으로) 프로젝트 단위의 여러 소스코드들이 저장되어 있는 여러 개의 Branch 가 저장되는 디스크 공간.

  • 파일이 저장되는 위치에 따라 로컬 저장소(Local Repository)와 원격 저장소(Remote Repository)로 구분.

Checkout

  • Checkout 대상: Branch, Commit, Tag
  • 특정 Commit이나 Tag, Branch 등의 소스코드로 이동하는 것.
  • Checkout 을 통해 과거의 여러 시점의 코드로 이동이 가능.
  • Branch 생성 및 삭제, 수정 등 다양한 작업에 활용.

The Three States

Modified

  • 수정한 파일을 아직 로컬 데이터베이스에 commit 하지 않은 상태.

Staged

  • 현재 버전에서 수정한 파일을 곧 Commit 할 것이라고 표시한 상태.

Committed

  • 데이터가 로컬 데이터베이스에 안전하게 저장된 상태.

The Three Main Sections


[사진 출처: Git 공식 웹사이트 (링크)]

Working Directory

  • 작업을 수행하기 위한 Directory, 즉, 일반적인 Local PC의 저장 경로.
  • Repository에서 특정 버전을 사용 혹은 수정하기 위해 Checkout 하여 저장하는 경로.
  • Repository에 commit 하기 위한 파일을 처음 생성 혹은 수정하는 공간.

Staging Area

  • commit 할 내용이 올라가는 임시 저장 영역.
  • Staging Area에서 commit에 반영할 파일만 선별하여 commit 진행.
  • Git의 기술적 용어로 "index"라고도 부름.

.git directory (Repository)

  • commit 된 파일들이 저장되는 공간. (Local Repository)
  • 파일의 수정사항, 즉, 각 버전에 대한 Snapshot을 저장.
  • Push를 하면 이 Local Repository에서 Remote Repository로 전송.

Git workflow

  1. Working Directory에서 파일을 생성 혹은 .git directory에서 Checkout 한 파일을 수정(Modify).

  2. 수정된(Modified) 파일을 commit 하기 위해 Staged 상태를 만들어 Staging Area에 임시 저장.

  3. commit 하면 Staging Area에서 선별된 파일들이 .git directory에 저장되어 commited 상태가 되며, 파일의 수정사항에 대한 Snapshot을 영구적으로 .git directory에 보관.

Commit

  • Staging Area에서 선별된 작업 내용을 Local Repository에 저장하는 과정.(버전을 생성하는 행위)
  • 각각의 commit 은 유의미한 변경 단위이며 commit log에 변경 사항에 대한 설명을 작성해 같이 저장 가능.
  • 참고 사항: commit 단위나 commit log format 을 정해두는 기업이나 팀도 있음. (빌드 서버를 사용하는 경우)
  • 권장 사항: (기업이나 팀의 규정 내에서) commit을 아낌없이 자주 하자. 게임 save point 남기듯 남겨주는 것이 좋다.

Tag

  • 특정 commit에 쉽게 접근할 수 있도록 붙여놓은 이정표.
  • Tag 가 붙은 commit 은 commit id (version) 대신 tag name으로 쉽게 checkout 가능.

Push

  • Local Repository의 내용 중, Remote Repository에 반영되지 않은 commit 을
    Remote Repository로 보내는 과정.
  • 주의 사항: Local Repository에서의 commit 과는 달리, 중앙 서버에 저장 시키는 것이기 때문에 협업 중인 다른 개발자들이 해당 파일에서 작업하게 되어 영향을 받을 수 있음. 검증되지 않은 코드는 Push 하지 않도록 주의.

Pull

  • Remote Repository에 있는 내용 중, Local Repository에 반영되지 않은 내용을 가져와서
    Local Repository에 저장하는 과정.
  • 다른 팀원이 변경하고 Push 한 내용을 Local Repository에 가져올 수 있음.
  • 참고 사항: Push 과정에서 Conflict (충돌)이 일어나서 Push 가 거절된 경우,
    Pull 을 통해 Remote Repository의 변경 내용을 Local Repository에 반영하여 Conflict를 해결한 뒤 다시 Push를 시도할 것.

Branch

  • 특정 시점 (commit 단위)에서 분기하여 새로운 commit 을 쌓을 수 있는 가지를 만드는 것.
  • 개발의 주축이 되는 branch를 master branch (혹은 main branch)라고 함.
  • 모든 branch는 최종적으로 다시 master branch에 merge (병합) 되는 형식으로 진행.

Merge

  • Branch의 반대개념으로 하나의 Branch를 다른 Branch 와 합치는 과정.
  • Merge 되는 두 Branch는 주종 관계가 성립. (예: dev branch를 main branch에 merge)
  • Merge 되는 과정에서 Confict(충돌)이 발생하는 경우 Diff를 수정하여 Conflict를 해결한 뒤 Merge를 진행할 수 있음.

0개의 댓글