Git
기술노트
🐙 Git
Git은 컴퓨터 파일의 변경사항을 추적하고, 여러 사용자 간의 작업을 조율하기 위해 설계된 분산 버전 관리 시스템(Distributed Version Control System, DVCS)입니다. 리누스 토발즈가 리눅스 커널 개발을 위해 만들었으며, 현재는 전 세계적으로 가장 널리 사용되는 버전 관리 시스템입니다.
Git은 소스 코드의 변경 이력(버전)을 관리하여, 언제든지 특정 시점의 코드로 되돌아가거나, 여러 개발자가 동시에 작업한 내용을 병합(Merge)하는 것을 매우 효율적으로 처리합니다.
🧱 Git의 핵심 개념
- 리포지토리 (Repository) : 프로젝트의 모든 파일과 변경 이력을 담고 있는 저장소. 내 컴퓨터의 로컬 리포지토리와, GitHub 같은 원격 서버의 원격 리포지토리로 나뉩니다.
- 커밋 (Commit) : 코드의 변경 사항을 하나의 의미 있는 버전으로 기록하는 행위. 각 커밋은 고유한 ID를 가지며, 변경 내용과 메시지를 포함합니다.
- 브랜치 (Branch) : 독립적인 작업 공간을 만드는 기능. 기존 코드에 영향을 주지 않고 새로운 기능을 개발하거나 버그를 수정할 때 사용됩니다. 대표적으로 `main` 또는 `master` 브랜치가 있습니다.
- 병합 (Merge) : 하나의 브랜치에서 작업한 내용을 다른 브랜치에 합치는 것. (예: `feature` 브랜치에서 개발한 신기능을 `main` 브랜치에 합침)
- 클론 (Clone) : 원격 리포지토리를 내 컴퓨터에 통째로 복제하여 로컬 리포지토리를 만드는 것.
- 푸시 (Push) : 로컬 리포지토리의 변경 내용을 원격 리포지토리에 업로드하는 것.
- 풀 (Pull) : 원격 리포지토리의 최신 변경 내용을 로컬 리포지토리로 가져와 병합하는 것.
💡 개발자 핵심 Point
- Git은 현대 소프트웨어 개발에서 협업을 위한 필수 도구입니다.
- 브랜치를 효과적으로 사용하는 것이 Git 협업의 핵심입니다. `Git-flow`, `GitHub Flow`와 같은 다양한 브랜칭 전략을 이해하고 프로젝트에 맞는 전략을 사용하는 것이 중요합니다.
- 커밋 메시지를 명확하고 의미 있게 작성하는 습관은, 나중에 문제의 원인을 추적하거나 다른 개발자와 협업할 때 매우 중요합니다.
- Git을 능숙하게 다루는 능력은 개발자의 기본 소양 중 하나로 여겨집니다.