
나는야 깃을 한 번도 사용해 본 적 없는 깃린이.
협업에 필수인 Git에 대해 한 번쯤 짚고 넘어갈 필요가 있다고 생각하여 정리해 보았다.
깃은 버전 관리 도구로, 마치 워드 문서를 여러 버전(최종본, 최종최종본, 진짜최종본...)으로 저장하는 대신, 깃을 사용하면 파일이 변경될 때마다 스냅샷을 찍듯 관리할 수 있으며, 누가 언제 어떤 파일을 어떻게 수정했는지 기록이 남는다.
👉 쉽게 말해 타임머신처럼 프로젝트를 과거로 돌릴 수도 있고, 여러 사람이 동시에 작업할 수도 있게 해주는 도구!
깃 자체는 내 컴퓨터에서 쓰는 도구이며, 깃허브는 그 깃 저장소(Repository, 줄여서 Repo)를 인터넷에 올려서 공유할 수 있게 해주는 사이트다. 팀 프로젝트나 오픈소스 활동에서 협업할 때 거의 필수처럼 쓰인다.
👉 쉽게 말해 구글 드라이브 같은 깃 전용 클라우드라고 보면 돼요.
깃을 이해할 때 꼭 알아야 하는 개념이 있는데 파일을 그냥 저장한다고 끝나는 게 아니라, 단계가 나뉘어 있다는 점이다.
main.py 코드를 직접 고친 상태git add 명령어를 쓰면 파일이 여기 올라감git add main.py → main.py가 스테이징에 올라감Local Repository (로컬 저장소)
- 내 컴퓨터 안에 있는 깃의 데이터베이스
- git commit 하면 스테이징된 변경 사항이 여기 기록됨 (히스토리 저장소)
- 예: git commit -m "버그 수정" → 로컬 저장소에 하나의 버전으로 등록
Remote Repository (원격 저장소)
- 깃허브(GitHub), 깃랩(GitLab), 비트버킷(Bitbucket) 등 인터넷 서버에 있는 저장소
- git push 하면 로컬 저장소의 커밋이 원격 저장소로 올라감
- git pull 하면 원격 저장소의 최신 내용이 내 로컬로 내려옴
👉 내 컴퓨터(로컬) 안에서 세 단계(작업 → 스테이징 → 저장소)가 있고, 마지막에 그걸 깃허브(원격)로 밀어 올려 협업할 수 있는 구조
내 컴퓨터
┌──────────────┐
│ Working Dir │ ← 내가 직접 파일 수정하는 곳
└──────┬───────┘
│ git add
┌──────▼───────┐
│ Staging Area │ ← 올릴 준비하는 대기실
└──────┬───────┘
│ git commit
┌──────▼───────┐
│ Local Repo │ ← 내 PC 안 깃 저장소 (히스토리 기록)
└──────┬───────┘
│ git push / git pull
┌──────▼───────┐
│ Remote Repo │ ← 깃허브 (인터넷 저장소, 팀 공유)
└──────────────┘
git init → 저장소 만들기git clone [저장소 주소] → 깃허브에 있는 프로젝트를 내 컴퓨터로 가져오기git status → 어떤 파일이 수정되었는지, 스테이징이 필요한지 확인(현재 상태 확인)git add [파일명] → 해당 파일을 스테이징에 추가git add . → 전체 파일을 스테이징에 추가git commit -m [메세지] → 스테이징한 변경사항을 저장git push origin [브랜치명] → 커밋한 변경사항을 해당 브랜치로 업로드git pull origin [브랜치명] → 해당 브랜치의 최신 버전을 로컬로 가져오기(git fetch + git merge)git fetch origin → 깃허브에서 최신 브랜치/커밋 정보 가져오기(내 파일에는 변화 없음)git checkout [브랜치명] → 브랜치 이동git checkout -b [브랜치명] → 새 브랜치를 만들고 해당 브랜치로 이동git push origin --delete [브랜치명] → 해당 브랜치 삭제git reset --soft HEAD~1 → 소프트리셋, 마지막 커밋만 취소, 수정한 파일은 유지git reset --hard HEAD~1 → 하드리셋, 마지막 커밋 및 변경 사항 삭제git reset HEAD [파일명] → git add 했던 걸 취소git stash → 변경 사항 임시 저장git stash pop → 저장해둔 걸 다시 불러오기git stash 란?지금 작업 중이던 변경사항을 임시로 보관(stash) 해두고, 워킹 디렉토리를 깨끗한 상태로 되돌려 주는 명령어. 즉, 변경 사항을 커밋하지 않고 잠깐 숨겨두는 기능!
(1) 브랜치를 급히 바꿔야 할 때
👉 이때 그냥 브랜치 바꾸면 충돌이 나거나 변경사항이 따라옴.
👉 git stash로 현재 변경사항을 서랍에 넣어두고, main으로 이동 → 버그 수정 → 다시 돌아와서 꺼내면 됨.
(2) 커밋하고 싶지 않은 임시 코드가 있을 때
👉 이때도 git stash로 보관 후 pull → 다시 꺼내와서 이어서 작업 가능.