개발을 하다 보면 한 가지 이상의 변경사항을 여러 사람과 함께 나누어 작업하고, 작업 이력을 관리해야 하는 경우가 발생합니다.
이런 상황에서 가장 널리 사용되는 분산 버전 관리 도구가 바로 Git 입니다.
이번 글에서는 Git이 무엇인지, 왜 필요한지에 대해 소개하고 이어서 Git을 사용하는 방법에 대한 글을 작성합니다.
Git 이란 무엇인가요?
Git은 소스 코드의 변경 이력을 효율적으로 관리할 수 있는 분산 버전 관리 시스템(DVCS)입니다.
개발 도중 발생하는 수많은 변경 사항을 기록하고, 이전 상태로 되돌리거나 다른 사람과 공유하는 데에 매우 유용합니다.
대부분의 버전 관리 시스템은
- 이전 버전을 확인하거나,
- 변경 내용을 비교하고 되돌리거나,
- 여러 개발자 간에 작업 내용을 병합하고 공유하는 기능을 제공합니다.
Git 역시 이러한 기능을 제공하는 수많은 버전 관리 도구 중 하나이며,
다른 예로는 Subversion(SVN), CVS, Mercurial 등이 있습니다.
Git은 2005년, 리눅스 커널을 개발하던 리누스 토발즈(Linus Torvalds)에 의해 처음 만들어졌습니다.
현재는 GitHub, GitLab, Bitbucket 등 다양한 플랫폼을 통해 전 세계 대부분의 소프트웨어 프로젝트에서 표준 도구로 사용되고 있습니다.
Git을 왜 사용해야 하나요?
Git에서 제공하는 기능은 아래와 같습니다.
- 변경 이력 추적 : 누가, 언제, 어떤 변경을 했는지 커밋 단위로 명확하게 확인할 수 있습니다.
- 되돌리기 기능 : 이전 상태로 되돌아가거나, 실수를 복구할 수 있는 기능이 내장되어 있습니다.
- 분산 구조 : 중앙 서버 없이도 로컬에서 전체 이력을 관리할 수 있습니다.
- 브랜치 기반 개발 : 기능 단위로 독립적인 브랜치를 만들어 안전하게 개발하고 코드를 병합할 수 있습니다.
- 협업에 강함 : GitHub, GitLab, Bitbucket 등과 연동하여 다수의 개발자들과 효율적으로 협업할 수 있습니다.
GitHub, GitLab, Bitbucket - 무엇이 다를까?
Git은 로컬에서도 충분히 사용할 수 있지만, 실제 업무에서는 여러명이 함께 코드 작업을 하기 위해 원격 저장소 플랫폼을 사용하는 경우가 일반적입니다.
대표적인 Git 협업 플랫폼으로 GitHub, GitLab, Bitbucket이 많이 사용됩니다.
이 세 플랫폼은 모두 Git 기반의 협업 기능을 제공하지만, 제공하는 기능, 인터페이스, 접근 방식에서 차이가 있습니다.
| 항목 | GitHub | GitLab | Bitbucket |
| 개발사 | Microsoft | GitLab Inc. | Atlassian |
| CI/CD 통합 | GitHub Actions (간편하고 빠름) | GitLab CI/CD (강력하고 유연함) | Bitbucket Pipelines (기본 제공) |
| Private 저장소 | 무료 제공 | 무료 제공 | 무료 제공 |
| UI/UX | 직관적이고 깔끔함 | 세부 기능까지 풍부 | Jira와 연동에 최적화된 구성 |
| 퍼미션 관리 | 팀 단위 설정 가능 | 그룹/하위 그룹, 역할 기반 세밀 제어 가능 | 프로젝트/워크스페이스 기반 제어 가능 |
| 통합 도구 | Actions, Copilot, Codespaces 등 다양함 | 자체적인 이슈 트래킹, Wiki 등 All-in-one | Jira, Trello, Confluence와 자연스러운 통합 |
| 오픈소스 커뮤니티 | 매우 활발함 (스타 수 기준 압도적) | 다소 적지만 GitLab 자체 프로젝트는 오픈소스 | 오픈소스 중심보다는 비즈니스 중심 활용이 많음 |
| 자체 호스팅 | GitHub Enterprise 필요 (유료) | 무료 자체 호스팅 가능 (GitLab CE) | Bitbucket Data Center |
Git 설치 전 기본 용어 이해하기
Git을 시작하기 전에 아래의 개념을 간단히 알아보겠습니다.
| 용어 | 설명 |
| Repository(저장소) | 프로젝트의 모든 변경 이력을 추적하는 공간입니다. 로컬과 원격 저장소로 나뉩니다. |
| Commit | 변경된 내용을 저장소에 기록하는 행위입니다. 이력이 쌓여 프로젝트의 히스토리를 만듭니다. |
| Branch | 하나의 작업 흐름을 위한 독립적인 공간입니다. 기능별로 브랜치를 만들고 병합할 수 있습니다. |
| Remote | 원격 저장소를 의미합니다. GitHub, GitLab, Bitbucket 등과 연결하여 협업할 수 있습니다. |
| Clone | 원격 저장소를 복사하여 내 로컬 저장소로 가져오는 작업입니다. 협업 시 가장 먼저 수행하는 명령입니다. |
| Push | 로컬 저장소에서 커밋한 내용을 원격 저장소로 업로드 하는 작업입니다. 팀원과 변경사항을 공유하거나, 백업하는 목적도 있습니다. |
| PR(Pull Request) | 주로 GitHub, GitLab 등에서 사용하는 협업을 위한 코드 병합 요청입니다. 자신의 작업한 메인 브랜치를 병합하기 전에 리뷰를 요청하는 방식으로, 코드 검토와 논의를 통해 품질을 높일 수 있습니다. |
'DevOps > Git' 카테고리의 다른 글
| [Git] Git 파일 관리 : add, status, rm (0) | 2025.04.16 |
|---|---|
| [Git] Git 저장소 생성 및 연결 : init, clone, remote (0) | 2025.04.15 |
| [Git] Git 설치 및 초기 설정 : config (0) | 2025.04.14 |
| GitHub Action CI/CD 파이프라인 구축하기(1) (0) | 2023.11.26 |
| Github Action이란 (0) | 2023.11.26 |