Git은 VCS(버전 관리 시스템)으로 협업 및 관리를 위한 강력한 도구입니다. 그럼 VCS는 무엇일까요?
VCS
VCS(버전 관리 시스템)는 소스 코드의 변경 이력을 관리하는 도구로, 개발자들이 소스 코드를 효율적으로 관리하고 협업할 수 있도록 돕습니다. VCS는 소스 코드가 변경될 때마다 변경 된 소스 코드 파일의 변화를 기록 (변경점 관리)합니다.
이렇게 기록한 변경점으로 소스 코드를 복구하거나 특정 시점의 파일을 가져올 수 있습니다. 또한 특정 시점에 수정한 파일을 가져와 수정된 내용을 비교하는 것이 가능하고, 해당 파일을 누가 변경했는지, 또 어떻게 파일이 변경되어 왔는지를 추적할 수 있습니다.
VCS를 통해 소스 코드의 이력을 추적할 수 있고, 여러 명의 개발자들이 분산 개발을 하며 협업할 수 있게되어 효율적인 개발을 할 수 있게됩니다. 대표적인 VCS로는 Git, SVN, Mercurial 등이 있습니다. 현업에서 대부분 개발자들인 VSC 중 분산 형태인 Git을 사용하고 있습니다.
Git
Git은 아래 세 가지 영역으로 나눠 Git의 작업 흐름을 관리하고 변경 사항을 효율적으로 추적하고, 버전 관리를 효율적으로 합니다. 개발자는 working Directory에서 소스 파일을 수정하고, Staging Directory에 추가한 후, 변경 사항을 commit하여 Repository(Git Directory)에 저장합니다.
Working Directory:
Working Directory는 개발자가 작업하는 로컬 파일 시스템의 디렉토리입니다. 여기에는 현재 작업 중인 소스 코드 파일들이 포함되어 있습니다. 이곳에서 파일을 작업하고 새 파일을 생성하거나 수정합니다.
Staging Directory:
Working Directory에서 변경된 파일 중 일부를 선택하여 스테이징 영역(Staging Directory)에 추가(add)할 수 있습니다. Staging Directory는 변경된 파일들의 스냅샷을 임시로 저장하는 곳이라 생각하면 됩니다. 이곳에 추가된 파일들은 commit 시 포함됩니다.
Git Directory:
Git Directory는 Git에서 작업한 변경 이력과 관리 정보가 저장되는 저장소입니다. .git이라는 이름의 숨김 폴더로 표시됩니다. Git Directory에는 commit된 파일의 스냅샷, branch 및 태그 정보, log 및 기타 Git 설정이 저장됩니다. 이 디렉토리를 함께 공유함으로써 모든 개발자가 동일한 저장소에 접근하여 소스 코드 이력을 공유하고 협업할 수 있습니다.
💁 git commit
git commit 명령은 변경 사항을 버전 관리에 저장합니다. 이 명령을 실행하면 Staging Directory에 올려놓은 변경 사항들이 스냅샷으로 저장됩니다. 이러한 변경 사항에 대한 정보를 해시값과 체크섬을 사용하여 식별하고 관리합니다.
체크섬은 '7d8s7d6f9d7szzcvsdwerahrj09' 이런 형태로 되어 있습니다. 체크섬을 통해 해당 스냅샷으로 이동할 수도 관리할 수도 있습니다. 이때 체크섬을 전부 입력하지 않고, 체크섬의 앞자리(7d8s7d6)만을 입력하여도 무방합니다.
Git 용어 설명
- 브랜치(branch):
branch는 Git에서 개발 작업을 독립적으로 수행하기 위한 개념입니다. 기본적으로 Git은 모든 작업을 main branch에서 수행합니다. 하지만 하나의 main branch만을 가지고 여러 개발자가 작업을 하게 된다면, 버전을 관리하기 어려울 것입니다. branch를 추가적으로 생성하여 작업함으로 여러 개발자가 동시에 작업할 수 있고, 각각의 작업을 분리하여 관리할 수 있습니다. 위 그림은 'feature'라는 branch를 생성한 예입니다. - main: Git의 기본 branch (예전에는 master)
- HEAD:
현재 작업 중인 commit 위치를 말합니다. commit을 하여 여러개의 변경점이 만들어졌습니다. 이때 개발자가 어느 위치를 작업하고 있는지 가리키는 포인터가 필요한데 이것이 바로 HEAD입니다. 위 그림은 'feature' branch에서 'Baf2eb4..'이라는 변경점에서 작업하고 있다는 뜻입니다.
'VCS' 카테고리의 다른 글
Git 초보자도 쉽게 이해할 수 있는 Git (2) 문법 정리 (feat. Github) (1) | 2024.03.06 |
---|---|
SVN 이클립스에서 SVN 사용법 (0) | 2023.07.24 |
Git 깃 커밋 메시지 작성 규칙(git commit message convention) (0) | 2022.10.29 |
Git Repository(원격 저장소) 변경 (feat. Git Bash) (0) | 2022.09.16 |
Git .gitignore 파일 생성 (0) | 2022.09.15 |