All'alba vincerò

At dawn, I will win!

Git

버전 관리(Version Control)와 Git 기초

나디아 Nadia 2024. 4. 24. 10:37

 

 

📌 버전 관리 (Version Control)

: 소프트웨어 등을 개발할 때 어떤 내용을 어느 시점에 누가 변경했는지에 대한 `변경점`을 관리하는 것을 의미

  • 프로젝트의 변경 사항을 추적
  • 이전 버전으로의 복원이나 협업을 용이하게 함
  • 소프트웨어 개발 생명 주기를 관리하는 데 도움을 줌

 

🔺 VCS (Version Control System)

: 버전 관리를 효과적으로 수행할 수 있는 도구


 

🔺 버전 관리 시스템의 종류

1. 로컬 버전 관리 시스템(Local Version Control System)

: 서버 없이 로컬 컴퓨터 내에서 데이터 베이스를 사용하여 파일의 버전을 관리.

 

2. 중앙 집중식 버전 관리 시스템

: 서버에서 최종 버전을 관리하는 방식으로 로컬에서 서버의 파일을 다운받아 수정한 후 수정 내용을 서버에 반영하여 관리. 
중앙 서버가 문제가 생기면 버전 관리가 어렵다는 문제가 있음.

 

3. 분산식 버전 관리 시스템(Distributed Version Control System)

: 서버가 있는 것은 중앙 집중식과 동일하지만, 로컬에서도 이를 관리하기 때문에 중앙 서버에 문제가 생긴다고 해서 로컬
의 내용을 바탕으로 안전하게 버전 관리가 가능

 
 


 

📌 Git 기초

 
Git은 스냅샷 모델을 사용한다. 
수정 내용이 없을 경우  이전 상태의 파일에 대한 링크만 저장한다.
 
 
✨ 스냅샷 모델
: 파일이나 폴더의 변경 사항을 기록하는 방식
각각의 변경 사항은 스냅샷으로 캡처되어 저장되며, 이전 스냅샷과의 차이점이 기록된다.

스냅샷 모델의 버전관리

 
 
 
델타 모델
: 파일의 변경사항이 생기면 이전 버전과 비교하여 변경된 부분을 저장하는 방식

델타 모델의 버전관리

 
 
 
 
 

📌 Git의 영역

 

0. branch

: 원래 코드와는 상관없이 독립적으로 개발을 진행할 수 있는 기능 

  • 하나의 프로젝트에서 여러 사람이 동시에 본인의 작업을 진행할 수 있다.
  • 보통 main 브랜치 위에서 작업하며, 브랜치 위에 새로운 브랜치를 생성해 독립된 작업 공간을 만들 수 있다.
  • 하나의 브랜치는 독립된 워크스페이스, 인덱스, 로컬 레포지토리, 리모트 레포지토리 공간을 가진다.

 

1. Working Directory (작업 디렉토리)

: 실제로 파일들이 존재하고 작업이 이루어지는 곳
 

2. Staging Area (인덱스)

: 변경된 파일들 중 Git이 추적하길 원하는 파일들을 일시적으로 저장하는 영역
 

3. Repository (저장소)

: 프로젝트의 모든 버전 기록이 담기는 곳으로, 실제로 Git이 관리하는 데이터가 저장되는 곳

 

4. Remote (원격 저장소)

: 인터넷이나 네트워크 어딘가에 있는 서버 저장소

- 데이터를 Push 하고 Pull 하는 곳


 

✨ Git의 기본 작업 흐름

1. 파일을 수정하고 Working Directory에서 변경을 진행
2. 변경한 파일 중 Git이 추적하길 원하는 파일을 Staging Area에 추가
3. Staging Area에 추가된 파일들을 커밋하여 Repository에 저장

4. Repository에 저장된 파일들을 push하여 Remote에 업로드




 

🔺 Git 특징

1. 로컬에서 관리 및 실행
거의 모든 명령이 로컬 파일과 데이터만 사용하기 때문에 네트워크에 연결이 없는 상태에서도 버전 관리가 가능하다. 

2. 무결성
Git의 무결성은 Git이 데이터를 저장할 때 데이터의 무결성을 유지한다는 것을 의미한다. 
즉, 데이터가 변경되지 않고 유지되는 것을 보장한다.

3. Git 객체
Git의 객체는 Blob, Tree, Commit, Tag의 총 4가지가 있으며, 이는 Git의 실제 데이터를 의미한다. 
Git 객체는 .git 디렉토리에서 관리되며 각 객체는 SHA-1 해시를 사용해 만들어진 체크섬으로 이루어져 있다.

 
 
✨ .git 디렉토리
Git이 프로젝트의 메타데이터와 객체 데이터베이스를 저장하는 곳
다른 Git 저장소를 Clone할 때 내부에 .git 디렉토리가 함께 복사된다. 
(.은 숨겨진 파일이라는 뜻)


 


 

참고

 

 

Git - 브랜치란 무엇인가

3.1 Git 브랜치 - 브랜치란 무엇인가 모든 버전 관리 시스템은 브랜치를 지원한다. 개발을 하다 보면 코드를 여러 개로 복사해야 하는 일이 자주 생긴다. 코드를 통째로 복사하고 나서 원래 코드와

git-scm.com

 

 

 

[깃(Git)] 2. 브랜치(Branch)의 개념 및 흐름

[깃(Git) 기본] 브랜치(Branch)의 개념과 브랜치(Branch)를 이용한 작업 흐름

6mini.github.io