상세 컨텐츠

본문 제목

[Git] Git 필수 용어 간단 정리

GIT

by choiDev 2024. 1. 3. 16:48

본문

분산 버전관리 시스템의 한 종류로 Linus Torvaldsrk 2005년에 개발한 오픈 소스 프로젝트입니다.

Git은 과거 작업 내역, 현재 작업내역 변경점 등을 가시적으로 확인할 수 있게 합니다.

 

Git의 필수 용어 정리

Local, Remote, Origin, Upstream, Repository, Sanpshot, Commit, Branch

 

Local 

개발자의 개인 컴퓨터나 작업환경을 의미합니다. Git은 분산 버전 관리 시스템으로, 개발자가 로컬 리포지토리(local repository)에서 작업을 하면서 코드 변경사항을 추적할 수 있게 해줍니다. 이렇게 로컬에서 작업한 내용은 나중에 원격(remote repository)에 푸시하여 다른 개발자와 공유할 수 있습니다. 

즉 local은 개발자 개인 개발컴퓨터의 Git 리포지토리를 가르킵니다.

 

Remote

서버에 저장된 원격 리포지토리를 의미합니다. GitHub, GitLab, Bithucket과 같은 서비스가 원격 리포지토리 호스팅을 제공합니다.
원격 리포지토리의 주요 기능은 다음과 같습니다. 

1. 코드공유 및 협업 : 원격 리포지토리는 팀 멤버들이 코드를 공유하고 협업할 수 있는 중앙 위치를 제공합니다. 개발자는 로컬 리포지토리에서 작업한 후 변경사항을 원격리포지토리로 푸시하여 공유할수있습니ㅏㄷ.

2. 백업 : 원격 리포지토리는 로컬 작업의 백업 역할을 합니다. 로컬 컴퓨터의 문제가 발새앟더라도 원격 리포지토리에 저장된 코드는 안전하게 보관됩니다.

3. 버전관리 : git버전 관리 기능은 로컬 원격 모두 작동합니다. 리포지토리의 변경이력을 추적하고 필요한 경우 이전 버전으로 롤백할 수 있습니다. 

4. 분산개발 : Git은 분산 버전 관리 시스템으로, 각 개발자가 자신만의 로컬 리포지토리를 가지며 원격 리포지토리와 독립적으로 작업 가능하고 필요에 따라 원격 리포지토리와 동기화를 합니다.

 

Origin
로컬 리포지토렝 연결된 원격 리포지토리의 "별칭" 입니다. 
이 별칭은 원격 리포지토리를 대신하며 원격 리포지토리의 전체 URL을 입력할 필요 없이 대체가 가능합니다.

전체 URL 예시) 
git push https://example.com/user/repository.git master

Origin 별칭 예시) 
git push origin master

이와 같이 간소화된 별칭을 사용 가능합니다.

 

Upstream
일반적으로 포크한 리포지토리에서 원본 리포지토리를 가리키는데 사용되는 용어입니다.
origin이 내가 소속된 팀 혹은 나의 원격 리포지토리라면 
Upstream은 오픈소스 프로젝트나 내가 기여하고싶은 프로젝트를 포크한뒤 원본 리포지토리, 포크 리포지토리 , 로컬리포지토리 3개가 존재할때 원본 리포지토리를 뜻 합니다.

 

Repository
파일과 이력을 추적하는 저장소를 의미합니다. 리포지토리의 종류는 위에 설명 드린것처럼 Local과 Remote가 있습니다.

 

Sanpshot
특정 시점에서 리포지토리 상태를 기록한 것을 의미합니다 . 이는 Git의 버전 관리를 수행하는 방식의 핵심입니다 .기본적으로, Git은 파일 시스템의 스냅샷을 만들고, 이를 커밋으로 저장합니다. 
스냅샷의 주요 특징은 다음과 같습니다.

1. 효율적인 저장 : Git은 스냅샷을 만들 때, 실제로 변경된 파일만 새로 저장합니다. 변경되지 않은 파일에 대해서는 이전 스냅샷의 파일을 참조합니다. 이는 저장공간을 효율적으로 사용하도록 도와줍니다. 

2. 커밋과 연관: 각 커밋은 해당 시점에서의 스냅샷을 나타냅니다. 커밋을 통해 이전 상태로 돌아 갈 수 있으며, 프로젝트의 이력을 추적할수 있습니다.

3. 변경사항 비교: 스냅샷을 사용함으로써 git은 두 커밋간의 차이를 쉽게 비교할 수 있습니다. 이는 코드 리뷰나 버그 추적에 유용합니다.

스냅샷을 통해 Git 사용자는 코드의 이전 버전으로 쉽게 되돌아갈수 있고, 프로젝트의 변화를 세밀하게 추적가능합니다.

 

Commit
커밋은 리포지토리의 특정 시점에 대한 스냅샷을 나타내며, 파일이나 디렉토리의 변경 사항을 리포지토리의 이력에 영구적으로 기록합니다. 각 커밋은 이전 커밋과의 차이점을 포함하고 고유한 식별자를 가지고 있습니다. 

1. 변경 이력 관리 : 커밋을 통해 파일의 변경, 추가, 삭제등의 이력을 관리할 수 있습니다.
2. 데이터 무결성 보장 : Git은 SHA-1 해시를 사용하여 각 커밋에 고유한 식별자를 부여하고, 이를 통해 커밋의 무결성을 보장합니다. 
3. 이전 상태로 복원 : 커밋을 사용하여 이전 상태로 손쉽게 되돌릴수 있습니다. 
4. 코드리뷰와 협업 : 커밋은 변경 사항을 명확하게 기록하기에 코드리뷰와 협업과정에서 어떤 변경사항이 발생했는지 명확하게 파악할수 있습니다. 

 

Branch 
동일한 코드에서 여러 기능을 동시에 개발하기 위한 기능으로 1개의 코드베이스에서
feature/signup (회원가입)
feature/registerBook (책 등록)
처럼 여러가지 기능을 만들 기능의 갈래를 만들 수 있습니다.

그리고 메인 브랜치가 아닌 다른 브랜치를 마련해서 개발을 진행함으로서 실제 안정버전은 보류한 상태로 개발진행이 가능하며 다른 기능을 만드는 동료와 동시다발적으로 개발을 진행가능합니다.