Git
기본 정보
- 이름: Git
- 분류: 분산 버전 관리 시스템(DVCS)
- 영문명: Distributed Version Control System
- 개발자: Linus Torvalds
- 최초 공개: 2005년
- 주요 용도: 소스 코드 버전 관리 및 협업
- 관련 주제: #Git #VersionControl #DevOps #GitHub #개발도구
개요
Git은 소스 코드의 변경 이력을 관리하고 여러 개발자가 동시에 협업할 수 있도록 지원하는 분산 버전 관리 시스템(DVCS) 이다.
프로젝트의 변경 내용을 기록하고, 이전 버전으로 복원하거나 여러 기능을 동시에 개발할 수 있으며, 현재 대부분의 소프트웨어 개발 프로젝트에서 표준으로 사용된다.
GitHub, GitLab, Bitbucket 등의 원격 저장소와 함께 사용하는 경우가 많다.
Git 구조
Working Directory
↓
Staging Area
↓
Local Repository
↓
Remote Repository
동작 과정
파일 수정
↓
git add
↓
Staging Area
↓
git commit
↓
Local Repository
↓
git push
↓
GitHub
주요 특징
- 버전 관리
- 협업 지원
- 분산 저장소
- 브랜치 관리
- 병합(Merge)
- 변경 이력 추적
- 이전 버전 복구 가능
설치 확인
git --version
저장소 생성
git init
현재 폴더를 Git 저장소로 초기화한다.
원격 저장소 복제
git clone
https://github.com/user/project.git
상태 확인
git status
현재 변경 사항을 확인할 수 있다.
파일 추가
git add .
모든 변경 파일을 스테이징 영역에 추가한다.
특정 파일만 추가
git add index.php
커밋
git commit -m
"회원가입 기능 추가"
변경 내용을 로컬 저장소에 기록한다.
원격 저장소 업로드
git push origin main
최신 코드 가져오기
git pull origin main
원격 변경 사항만 가져오기
git fetch
병합 없이 원격 변경 사항만 다운로드한다.
로그 확인
git log
간략하게 보기
git log --oneline
브랜치 생성
git branch feature/login
브랜치 목록
git branch
브랜치 이동
git checkout feature/login
최신 방식
git switch feature/login
브랜치 생성 및 이동
git switch -c feature/login
병합(Merge)
git merge feature/login
기능 브랜치를 현재 브랜치에 병합한다.
브랜치 삭제
git branch -d feature/login
변경 내용 확인
git diff
커밋 간 비교
git diff HEAD~1 HEAD
되돌리기(Reset)
git reset --hard HEAD
모든 변경 사항을 마지막 커밋 상태로 되돌린다.
⚠️ 주의: 작업 내용이 삭제될 수 있다.
특정 커밋 취소(Revert)
git revert
<commit-id>
기존 이력을 유지하면서 변경 내용을 되돌린다.
.gitignore
Git이 추적하지 않을 파일을 지정한다.
vendor/
node_modules/
.env
*.log
Git 작업 흐름
Feature Branch
↓
Commit
↓
Push
↓
Pull Request
↓
Code Review
↓
Merge
↓
Deploy
Git과 GitHub 차이
| Git | GitHub |
|---|---|
| 버전 관리 시스템 | Git 저장소 호스팅 서비스 |
| 로컬에서도 사용 가능 | 클라우드 기반 |
| 명령어 중심 | 웹 UI 제공 |
| 소스 관리 | 협업 및 코드 공유 |
대표 브랜치 전략
Git Flow
main
↓
develop
↓
feature
↓
release
↓
hotfix
대규모 프로젝트에서 많이 사용된다.
GitHub Flow
main
↓
feature branch
↓
Pull Request
↓
Merge
소규모 및 애자일 프로젝트에서 많이 사용된다.
대표 활용 분야
- 웹 개발
- 모바일 앱 개발
- 게임 개발
- AI 프로젝트
- DevOps
- 오픈소스
- ERP
- SaaS
장점
- 변경 이력 관리
- 협업 효율 향상
- 이전 버전 복구 가능
- 브랜치 기능 제공
- 무료 사용 가능
- 다양한 플랫폼 지원
단점
- 초보자에게 명령어가 어려울 수 있음
- Merge Conflict 발생 가능
- 브랜치 전략 이해 필요
- 잘못된 Reset 사용 시 데이터 손실 위험
실무 메모
실무에서는 다음과 같은 방식이 권장된다.
main브랜치는 항상 안정 상태 유지- 기능별 브랜치(
feature/*) 생성 - 커밋 메시지는 명확하게 작성
.gitignore적극 활용- Pull 전에
git fetch확인 - 작은 단위로 자주 Commit
- Pull Request 후 코드 리뷰 진행
- 민감 정보(API Key, 비밀번호)는 Commit 금지
- Tag를 활용한 버전 관리
- 정기적으로 원격 저장소 동기화
Git와 함께 사용하는 기술
대표 GUI 도구
- GitHub Desktop
- SourceTree
- Fork
- GitKraken
- VS Code Git
관련 문서
출처
- Git 공식 홈페이지
- Git 공식 문서
- Pro Git Book