Home > CS > 2024 > 💾 [CS] git이란 무엇일까요?

💾 [CS] git이란 무엇일까요?
CS

💾 [CS] git이란 무엇일까요?

  • 분산 버전 관리 시스템(Distributed Version Control System)으로, 소스 코드의 변경 사항을 추적하고 협업을 효율적으로 지원하기 위한 도구입니다.
  • Git은 개발자가 소프트웨어 프로젝트의 이력을 관리하고, 동시에 여러 사람과 협력하여 코드를 관리할 수 있도록 설계되었습니다.

1️⃣ Git의 주요 특징.

1️⃣ 분산 버전 관리.

  • Git은 중앙 서버뿐 아니라 각 사용자의 컴퓨터에 전체 소스 코드 히스토리를 저장합니다.
  • 네트워크 연결이 없어도 로컬에서 모든 기능(브랜치, 커미스 로그 확인 등)을 사용할 수 있습니다.

2️⃣ 빠른 성능.

  • Git은 대규모 프로젝트에서도 빠르게 동작하도록 설계되었습니다.
  • 로컬에서 동작하므로, 파일 변경 추적, 브랜치 생성, 병합 등이 빠르게 처리됩니다.

3️⃣ 브랜치 기반 워크플로우.

  • 브랜치를 쉽게 만들고, 다양한 기능 개발이나 실험을 독립적으로 진행할 수 있습니다.
  • 브랜치를 병합(Merge)하거나 삭제할 때도 매우 효율적입니다.

4️⃣ 데이터 무결성 보장.

  • Git은 데이터를 변경 불가능한 SHA-1 해시값으로 관리하여 무결성을 보장합니다.
  • 코드의 이력과 상태가 손상되거나 변조되는 것을 방지합니다.

5️⃣ 효율적인 협업 지원.

  • 개발자 간의 협업에서 발생하는 충돌을 최소화하고, 동시 작업을 효과적으로 관리할 수 있습니다.
  • pull, push, merge 등의 명령어를 통해 코드 변경 사항을 공유하고 통합합니다.

2️⃣ Git의 기본 개념.

1️⃣ Repository(저장소)

  • 프로젝트와 관련된 모든 파일과 이들의 변경 이력을 저장하는 공간.
  • 로컬 저장소(Local Repository)와 원격 저장소(Remote Repository)가 있습니다.

2️⃣ Commit(커밋)

  • 변경 사항을 기록하는 스냅샷.
  • 프로젝트의 특정 상태를 저장하며, 커밋 메세지를 통해 변경 내용을 설명합니다.

3️⃣ Branch(브랜치)

  • 독립적인 작업을 위한 분기점.
  • 기본 브랜치는 main 또는 master이며, 새로운 기능이나 실험을 위해 독립적인 브랜치를 생성할 수 있습니다.

4️⃣ Clone(클론)

  • 원격 저장소(Remote Repository)를 로컬(Local)로 복제하여 동일한 프로젝트를 시작하는 작업.

5️⃣ Pull(풀)

  • 원격 저장소(Remote Repository)의 최신 변경 사항을 가져오는 명령어.

6️⃣ Push(푸시)

  • 로컬 저장소(Local Repository)에서 작업한 내용을 원격 저장소(Remote Repository)에 업로드(Upload)하는 명령어.

7️⃣ Merge(병합)

  • 한 브랜치(Branch)에서 다른 브랜치(Branch)로 변경 내용을 통합하는 작업.

8️⃣ Staging Area(스테이징 영역)

  • 커밋(Commit)하기 전에 변경된 파일을 임시로 저장하는 곳.
  • git add 명령어로 변경 사항을 스테이징 영역(Staging Area)에 추가합니다.

3️⃣ Git의 장점.

1️⃣ 효율적인 협업.

  • 여러 개발자가 동시에 작업할 수 있도록 브랜치(Branch)와 병합(Merge) 기능을 제공.

2️⃣ 히스토리 관리.

  • 프로젝트의 모든 변경 사항을 시간순으로 기록하여 언제든지 과거 상태로 되돌릴 수 있음.

3️⃣ 분산형 구조.

  • 네트워크에 의존하지 않고 로컬에서도 작업할 수 있음.

4️⃣ 대규모 프로젝트 지원.

  • 대규모 코드베이스에서도 빠르고 안정적으로 동작.

5️⃣ 오픈 소스 및 커뮤니티 지원.

  • 오픈 소스 프로젝트로서 활발한 커뮤니트와 다양한 도구 지원.

4️⃣ Git의 단점.

1️⃣ 학습 곡선.

  • Git 명령어와 개념이 복잡하여 초보자가 익히는 데 시간이 걸릴 수 있음.

2️⃣ 충돌 관리.

  • 협업 중 병합 충돌(Merge Conflict)이 발생하면 수동으로 해결해야 함.

3️⃣ 파일 크기 제한.

  • 대용량 바이너리 파일 관리에는 적합하지 않음(Git LFS 사용 필요).

5️⃣ Git이 널리 사용되는 이유.

    1. 오픈소스로 무료 제공.
    1. Github, GitLab, Bitbucket 등의 플랫폼과의 통합.
    1. 다양한 개발 도구(IDE)와의 호환성.
    1. 대규모 협업 프로젝트를 위한 강력한 기능 제공.