Git이란?
Git은 파일의 변경 이력을 기록하고 관리하는 버전 관리 시스템이다.
코드를 수정하다 보면 이전 상태로 돌아가야 하거나, 여러 작업을 나눠서 관리해야 하는 경우가 생긴다.
Git을 사용하면 이런 변경 사항을 체계적으로 관리할 수 있다.
GitHub란?
GitHub는 Git으로 관리한 프로젝트를 올려두는 원격 저장소 호스팅 서비스이다.
- Git: 버전 관리 도구
- GitHub: Git 저장소를 올려두는 사이트
내 컴퓨터에서 Git으로 작업하고, GitHub에 업로드해서 백업하거나 협업할 수 있다.
Git의 기본 구조
Git은 보통 아래 흐름으로 동작한다.
작업 디렉토리 → 스테이징 영역 → 저장소
1. 작업 디렉토리(Working Directory)
내가 실제로 파일을 만들고 수정하는 공간이다.
→ 현재 작업 중인 프로젝트 폴더 자체를 뜻한다.
2. 스테이징 영역(Staging Area)
수정한 파일 중에서 이번에 저장할 파일만 골라 올려두는 공간이다.
git add 파일명
전체 파일을 올릴 때는 다음처럼 사용할 수 있다.
git add .
3. 저장소(Repository)
스테이징 영역에 올린 변경 사항을 하나의 버전으로 저장하는 공간이다.
git commit -m "커밋 메시지"
Git 시작하기
Git으로 버전 관리를 시작할 때는 아래 명령어를 사용한다.
git init
이 명령어는 현재 폴더를 Git 저장소로 초기화하는 역할을 한다.
자주 사용하는 기본 명령어
git init
현재 폴더를 Git 저장소로 만든다.
git init
git add
변경한 파일을 스테이징 영역에 올린다.
git add app.js
또는
git add .
git commit
스테이징 영역의 파일을 하나의 버전으로 저장한다.
git commit -m "로그인 기능 추가"
커밋 메시지는 어떤 변경이 있었는지 파악하는 기준이 되기 때문에 명확하게 작성하는 것이 중요하다.
git log
지금까지 저장된 커밋 내역을 확인한다.
git log
되돌리기 : Revert와 Reset
Git에서 변경 사항을 되돌릴 때는 revert와 reset을 구분해서 알아야 한다.
Revert
기존 커밋을 지우는 것이 아니라, 그 커밋을 취소하는 새 커밋을 만드는 방식이다.
git log
git revert 커밋해시값
기록이 남기 때문에 협업에서 비교적 안전하게 사용할 수 있다.
Reset
특정 시점으로 아예 되돌리는 방식이다.
git reset --hard 커밋해시값
강하게 되돌리는 만큼, 사용 시 주의가 필요하다.
- revert: 취소 내역을 남김
- reset: 특정 시점으로 되돌림
Vim 에디터 종료
Git 명령어를 사용하다 보면 Vim 편집기가 열릴 때가 있다.
이때 저장 후 종료하는 명령어는 아래와 같다.
:wq
브랜치(Branch)
브랜치는 작업 내용을 나눠서 관리하는 독립된 공간이다.
예를 들어 메인 브랜치와 별도로 로그인 기능, 회원가입 기능을 각각 따로 작업할 수 있다.
기존 코드에 바로 영향을 주지 않고 개발할 수 있다는 점에서 중요하다.
브랜치 관련 명령어
브랜치 생성:
git branch 브랜치명
브랜치 목록 확인:
git branch
브랜치 이동:
git switch 브랜치명
브랜치 생성과 이동을 한 번에:
git switch -c 브랜치명
Merge
merge는 브랜치에서 작업한 내용을 다른 브랜치에 합치는 명령어다.
git switch main
git merge login-feature
즉, login-feature에서 작업한 내용을 main에 반영하는 것이다.
충돌(Conflict)
브랜치를 합칠 때 같은 파일의 같은 부분을 서로 다르게 수정하면 충돌이 발생할 수 있다.
이 경우에는 충돌 난 파일을 직접 열어서 내용을 정리한 뒤 다시 add와 commit을 진행하면 된다.
git add .
git commit -m "충돌 해결"
원격 저장소와 GitHub
내 컴퓨터에서만 작업하면 로컬에만 기록이 남는다.
GitHub에 올리면 백업과 협업이 가능해진다.
git push
로컬의 변경 사항을 원격 저장소에 올린다.
git push
git pull
원격 저장소의 최신 내용을 내 컴퓨터로 가져온다.
git pull
Fork와 Clone
Clone
원격 저장소를 내 컴퓨터로 복사해오는 것이다.
git clone 저장소주소
Fork
다른 사람의 저장소를 내 GitHub 계정으로 복사하는 것이다.
보통 오픈소스 기여에서 많이 사용한다.
- clone: 내 컴퓨터로 복사
- fork: 내 GitHub 계정으로 복사
Upstream
Fork한 프로젝트를 사용할 때 원본 저장소를 연결해두는 방식이다.
git remote add upstream 원본저장소주소
이렇게 설정하면 원본 저장소의 최신 변경 내역을 가져올 수 있다.
Pull Request(PR)
Pull Request는 작업한 브랜치를 바로 합치지 않고, 검토를 요청한 뒤 merge하는 방식이다.
→ 협업 시 코드 리뷰를 거쳐 안전하게 병합할 수 있도록 도와주는 기능이다.
오늘 배운 핵심 명령어 정리
git init
git add .
git commit -m "커밋 메시지"
git log
git revert 커밋해시값
git reset --hard 커밋해시값
git branch
git branch 브랜치명
git switch 브랜치명
git switch -c 브랜치명
git merge 브랜치명
git clone 저장소주소
git remote add upstream 원본저장소주소
git push
git pull
마무리
Git과 GitHub를 정리하면서 느낀 점은, 명령어가 많아 보이지만 실제 흐름은 생각보다 단순하다는 것이다.
작업 → add → commit → 필요하면 branch 분리 → merge 또는 push
Git은 단순히 코드를 저장하는 도구가 아니라, 변경 이력을 남기고 협업을 가능하게 해주는 중요한 도구라는 점을 다시 느꼈다.
'TIL' 카테고리의 다른 글
| [TIL]JavaScript (생성자 함수, 프로토타입, 배열, 내장 객체) (0) | 2026.04.10 |
|---|---|
| [TIL]JavaScript 핵심 개념 정리 (반복문, 객체, 함수) (0) | 2026.04.09 |
| [TIL]JavaScript 기초 문법 정리 (0) | 2026.04.08 |
| [TIL]CSS 핵심 정리 (선택자부터 레이아웃까지) (0) | 2026.04.07 |
| [TIL]HTML 기초 태그 정리 (0) | 2026.04.07 |