Git은 소프트웨어 개발 과정에서 코드의 변경 사항을 추적하고, 여러 사람들이 동시에 작업할 수 있도록 지원하는 분산 버전 관리 시스템입니다. 2005년 리누스 토발즈에 의해 개발되었으며, 오늘날 가장 널리 사용되는 버전 관리 시스템 중 하나로 자리 잡았습니다. 이 포스트에서는 Git의 기본 개념, 사용 방법, 그리고 몇 가지 고급 기능에 대해 소개하겠습니다.
기본 개념
- 버전 관리 시스템(VCS): 파일 변경 사항을 추적하여, 특정 시점에 저장된 버전으로 쉽게 돌아갈 수 있게 해주는 시스템입니다.
- 리포지토리: 프로젝트의 모든 파일, 폴더, 그리고 이들의 변경 이력을 저장하는 공간입니다. 리포지토리는 로컬(개인 컴퓨터)과 원격(예: GitHub)에 존재할 수 있습니다.
- 커밋: 리포지토리에 기록되는 개별 변경 사항의 '스냅샷'입니다. 각 커밋은 이전 상태와 비교하여 무엇이 변경되었는지를 기록합니다.
- 브랜치: 독립적으로 어떤 작업을 진행하기 위한 코드의 분기입니다. 기본적으로 모든 리포지토리는 main 또는 master 브랜치를 가지고 시작합니다.
- 머지: 두 브랜치의 변경 사항을 하나로 합치는 과정입니다. 작업이 완료된 브랜치를 기본 브랜치(예: main)에 병합하여 모든 변경 사항을 통합할 수 있습니다.
기본 사용법
Git을 사용하는 기본적인 프로세스는 다음과 같습니다:
- 리포지토리 초기화 또는 복제: git init 명령어로 새 리포지토리를 생성하거나, git clone 명령어로 원격 리포지토리를 복제합니다.
- 작업 및 변경 사항 스테이징: 파일을 수정하고 git add 명령어로 스테이징 영역에 추가합니다.
- 커밋: git commit 명령어로 변경 사항을 리포지토리에 기록합니다.
- 브랜치 및 머지: 필요한 경우 새로운 브랜치를 생성하고, 작업이 완료되면 git merge 명령어로 브랜치를 병합합니다.
- 원격 리포지토리와 동기화: git push 명령어로 로컬 리포지토리의 변경 사항을 원격 리포지토리와 동기화하고, git pull 명령어로 원격 리포지토리의 최신 변경 사항을 로컬로 가져옵니다.
Git 설치 및 기본 설정
Git을 사용하기 전에, 시스템에 설치해야 합니다. 공식 웹사이트(git-scm.com)에서 다운로드할 수 있습니다. 설치 후, 사용자 이름과 이메일 주소를 설정해야 합니다. 이는 커밋할 때 사용자를 식별하는 데 사용됩니다.
git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"
Git 저장소 초기화 및 클론
새 프로젝트에 Git을 사용하려면, 프로젝트 디렉토리에서 다음 명령어로 Git 저장소를 초기화합니다.
git init
기존 프로젝트를 시작하려면, 저장소를 클론합니다.
git clone <repository-url>
기본 Git 명령어
- git add: 작업 디렉토리의 변경사항을 스테이징 영역에 추가합니다.
- git commit: 스테이징 영역의 변경사항을 로컬 저장소에 커밋합니다.
- git pull: 원격 저장소의 변경사항을 로컬 저장소로 가져와 병합합니다.
- git push: 로컬 저장소의 변경사항을 원격 저장소에 업로드합니다.
- git branch: 브랜치를 생성, 목록 보기, 삭제 등을 수행합니다.
- git merge: 두 브랜치를 병합합니다.
- git checkout: 다른 브랜치로 전환합니다.
협업을 위한 Git 활용
협업 시, 브랜치를 사용하여 각 기능이나 버그 수정을 독립적으로 개발할 수 있습니다. 일반적으로 main 또는 master 브랜치는 안정적인 버전의 코드를 유지합니다. 새로운 기능을 개발할 때는 새 브랜치를 생성하고, 개발이 완료되면 main 브랜치로 병합합니다.
git branch new-feature
git checkout new-feature
# 기능 개발 후
git checkout main
git merge new-feature
충돌 해결
두 브랜치를 병합할 때 같은 파일의 같은 부분이 수정되었다면, Git은 충돌을 발생시킵니다. 충돌이 발생하면, Git은 충돌이 있는 파일에 표시를 해줍니다. 개발자는 이를 수동으로 해결하고, 해결 후에 다시 커밋해야 합니다.
결론
Git은 강력한 버전 관리 시스템으로, 개인 프로젝트부터 대규모 협업 프로젝트까지 모든 종류의 소프트웨어 개발에 있어 필수 도구입니다. 기본적인 명령어와 원칙을 이해하는 것은 효과적인 사용의 첫걸음입니다. Git을 숙달하면, 코드의 이력을 추적하고, 변경사항을 관리하며, 다른 개발자와의 협업이 훨씬 용이해집니다.