버전 관리(Version Control)
- 파일이나 코드의 변경 이력을 체계적으로 기록하고 관리하는 것
- 언제, 누가, 무엇을 바꿨는지 알 수 있고, 필요하면 과거 상태로 되돌릴 수
있음
버전 관리가 필요한 이유
- 변경 이력을 추적하고, 실수를 복구하며, 여러 사람이 충돌 없이 협업하기 위해
버전 관리 활용
- 기능을 추가했다가 버그가 생겼을 때 이전 정상 동작 버전으로 바로 되돌릴 수 있다
- 팀원이 동시에 같은 파일을 수정해도 누가 무엇을 바꿨는지 확인하고 충돌을 해결할
수 있다
- “최종_진짜최종_v3” 같은 파일을 만들지 않고도 변경 과정을 깔끔하게 관리할 수 있다.
Git
코드가 언제, 어떻게, 왜 변경되었는지 기록하고 팀원들과 안전하게 안정적으로 협업할 수 있도록 돕는 도구

- 변경 내용이 커밋 단위로 기록됨
- 언제든 특정 시점으로 되돌릴 수 있음
- 여러 사람이 동시에 작업 가능
- 변경 이력과 책임이 명확함
GitHub
Git 저장소를 온라인에서 공유하고, 코드 리뷰와 협업 과정을 관리할 수 있도록 해주는 플랫폼

- Pull Request, Issue, Review 기능 제공
웹 서비스 vs Git과 GitHub
웹 서비스가
사용자 → 서버 → 데이터베이스 → AI 모델을 연결하는 구조라면,
Git과 GitHub는
개발자 → 코드 → 변경 이력 → 협업 과정을 연결하는 구조이다.
Git & GitHub 기초 학습 목표
- 버전 관리의 개념 이해
- Git이 왜 필요한지 설명할 수 있다.
- 코드 변경 이력이 어떻게 관리되는지 이해한다.
- 로컬과 원격 저장소의 차이 이해
- Local Repository와 Remote Repository의 역할을 구분할 수 있다.
- push와 pull의 개념을 설명할 수 있다.
- 브랜치 기반 협업 구조 이해
- 브랜치가 왜 필요한지 설명할 수 있다.
- 기능 단위 개발 흐름을 이해한다.
- Pull Request 기반 코드 리뷰 이해
- Pull Request의 역할을 설명할 수 있다.
- 협업에서 병합 과정이 왜 중요한지 이해한다.
- AI 헬스케어 프로젝트 협업 흐름 이해
- 모델 코드와 서비스 코드를 분리하여 관리하는 이유를 이해한다.
- 팀 단위 프로젝트에서 발생할 수 있는 충돌 상황을 이해한다.
용어 정리
Repository(레포지토리)
파일과 그 변경 이력을 함께 관리하는 저장소. 프로젝트 전체와 모든 버전 기록이 들어 있음
Commit(커밋)
변경 사항을 하나의 기록으로 저장하는 단위(= 하나의 버전)
- “무엇을 왜 바꿨는지”를 메시지로 남김
- 특정 시점의 프로젝트 상태를 저장
- 되돌아갈 수 있는 기준점 역할
- 커밋 생성: git commit -m "회원가입 기능 추가"
Branch(브랜치)
독립적으로 작업할 수 있는 작업 공간
- 기존 코드를 건드리지 않고 기능 개발 가능
- 여러 기능을 동시에 개발할 수 있음
- 작업이 끝나면 병합(merge)함
- 브랜치 생성: git branch feature/login
- 브랜치 전환: git switch feature/login
HEAD(헤드)
- 현재 내가 작업 중인 위치를 가리키는 포인터
- 보통 현재 브랜치의 최신 커밋을 가리킴
- HEAD가 움직인다는 것은 작업 기준이 바뀐다는 의미
Working Directory
실제로 파일을 수정하고 작업하는 공간. 아직 Git에 기록되지 않은 변경 사항이 있는 상태
Staging Area
다음 커밋에 포함할 변경 사항을 미리 모아두는 공간
Git 명령어 모음

https://legend-palm-1f1.notion.site/Git-159caf5650aa8066bcb2eafa6741d5a5?pvs=143
Git Commit / Git Branch Conflict

작업 → add → commit
commit = 저장 + 버전 기록
git add .
git commit -m "메시지"
