오늘 TIL에서는 Git 기초 강의를 들으며 버전 관리 시스템에 대해 처음 배워봤다.
처음 접하는 개념이라 아직은 익숙하지 않고 어렵게 느껴졌다.
하지만 내일 있을 팀 프로젝트에서 Git을 활용하게 될 예정이기 때문에,
오늘 배운 Git의 기본 개념과 명령어들을 중요한 것 위주로 정리해보려고 한다.
Git이란?
Git은 파일과 코드의 변경 기록을 저장하고 관리하는 버전 관리 시스템(Version Control System)이다.
프로젝트를 진행하면서 파일을 수정하게 되면, Git은 언제 어떤 부분이 변경되었는지 기록해 준다.
이를 통해 이전 버전으로 되돌리거나 변경 내역을 쉽게 확인할 수 있다.
또한 Git은 분산형 버전 관리 시스템으로, 여러 사람이 함께 작업할 때 수정 내역을 추적하고 협업할 수 있도록 도와준다.
아래 그림은 분산형 버전 관리 시스템의 구조를 나타낸 것이다.

위 사진처럼 분산형 버전 관리 시스템은 각 사용자가 저장소를 복사하여 작업할 수 있는 구조를 가진다.
Git과 GitHub 차이
Git과 GitHub는 함께 많이 사용되지만 역할이 서로 다르다.
- Git : 내 컴퓨터에서 파일의 변경 이력을 관리하는 버전 관리 도구
- GitHub : Git으로 관리한 코드를 인터넷에 저장하고 공유할 수 있는 서비스
쉽게 정리해보면 Git은 버전 관리를 하는 기능에 초점이 맞춰져 있고,
GitHub는 코드를 온라인에서 저장하고 다른 사람들과 협업할 수 있도록 도와주는 플랫폼이라고 할 수 있다.
Git의 기본 구조

Git은 크게 세 가지 영역으로 나누어 관리된다.
1. Working Directory
실제로 파일을 생성하거나 수정하는 작업 공간으로, 개발자가 코드를 작성하거나 수정하는 위치이다.
2. Staging Area
`git add` 명령어를 통해 커밋하기 전에 변경된 파일을 모아두는 공간이다.
커밋할 파일들을 미리 선택하는 단계라고 이해할 수 있다.
3. Repository
`git commit`을 통해 버전이 저장되는 공간으로, 프로젝트의 변경 이력이 기록되고 관리되는 저장소이다.
여기서 커밋(Commit)이란?
커밋은 현재 변경된 파일 상태를 하나의 버전으로 저장하는 것을 의미한다.
즉, 프로젝트의 특정 시점의 상태를 기록하는 과정이라고 볼 수 있다.
Working Directory → Staging Area → Repository → GitHub
Git에는 다양한 명령어가 존재하지만,
팀 프로젝트를 진행하면서 꼭 알아야 할 주요 명령어 몇 가지를 정리해보았다.
Git에서 자주 사용되는 명령어
1. Commit
git commit
Commit은 현재 작업한 내용을 하나의 버전으로 저장하는 것을 의미한다.
예를 들어 코드를 수정하거나 새로운 기능을 추가했을 때, 그 상태를 기록해 두는 과정이라고 생각하면 이해하기 쉽다.
𖠌 프로젝트의 변경된 내용을 기록해 두는 과정 𖠌
2. Branch
git branch
Branch는 기존 코드와는 별개로 새로운 작업 공간을 만드는 기능이다.
팀 프로젝트를 진행할 때 여러 사람이 동시에 작업하게 되면 같은 코드를 수정하면서 충돌이 생길 수 있다.
이럴 때 Branch를 사용하면 𖠌 각자 독립적인 공간에서 작업 𖠌 할 수 있다.
3. Merge
git merge
Merge는 각자 작업한 브랜치를 하나로 합치는 작업을 의미한다.
예를 들어 팀원들이 각각 다른 기능을 개발한 뒤 작업이 완료되면 𖠌 브랜치를 합쳐 하나의 코드로 통합 𖠌 하게 된다.
4. Push
git push
Push는 내 컴퓨터에서 작업한 내용을 GitHub 같은 원격 저장소로 업로드하는 것이다.
즉, 내가 작업한 코드를 𖠌 팀원들과 공유하는 과정 𖠌 이라고 볼 수 있다.
느낀 점
오늘 강의를 통해 Git의 기본 개념과 구조를 처음 접해보았다.
내용이 생각보다 많고 처음 배우는 개념이라 모든 내용을 완전히 이해하기는 어려웠다.
그래서 튜터님의 조언에 따라 팀 프로젝트를 진행하면서 꼭 필요한 핵심 개념과 명령어 위주로 정리해보았다.
특히 Git의 전체적인 흐름을 이해하는 데 중점을 두고 학습했다.
아직은 익숙하지 않지만, 직접 사용해보면서 하나씩 이해해가는 과정이 재미있게 느껴졌다.
내일부터 진행될 팀 프로젝트에서 Git을 직접 사용해 보면서 명령어와 협업 방식에 더 익숙해지고 싶다.
팀 프로젝트도 화이팅ヾ(*´∇`)ノ🔥