본문 바로가기
백엔드

Git & GitHub 완벽 정리

by 발빠진 쥐 2026. 3. 30.

협업의 필수 도구, Git & GitHub 기초부터 실무 활용까지 한 번에 정리

 

개발을 하다 보면 가장 먼저 듣는 말 중 하나가 바로 “Git은 꼭 배워야 한다” 입니다.

처음에는 단순히 코드를 저장하는 도구처럼 느껴질 수 있지만, 실제로는 코드의 모든 변경 이력을 관리하고 협업을 가능하게 만드는 핵심 도구입니다.

 

특히 팀 프로젝트를 하거나 포트폴리오를 관리할 때 Git과 GitHub는 거의 필수라고 볼 수 있습니다.

 

이번 글에서는 Git의 기본 개념부터 실무에서 자주 사용하는 명령어, 브랜치 전략까지 한 번에 정리해보겠습니다.

 


 

왜 Git과 GitHub를 배워야 할까?

 

개발은 생각보다 수정의 연속입니다.

 

처음 작성한 코드가 그대로 유지되는 경우는 거의 없고,

기능 추가 → 오류 수정 → 리팩토링 → 협업 과정에서 계속 변화합니다.

 

이때 Git이 없다면 어떤 문제가 생길까요?

  • 이전 코드로 되돌리기 어려움
  • 누가 어떤 부분을 수정했는지 확인 불가
  • 팀원 코드와 충돌 발생
  • 실수로 파일 삭제 시 복구 어려움

 

즉, Git은 단순 저장이 아니라 코드의 시간 흐름을 기록하는 시스템입니다.

 

쉽게 말해

 

“내 코드의 타임머신” 이라고 생각하면 이해하기 쉽습니다.

 

GitHub는 이 Git 저장소를 온라인에서 관리하는 플랫폼으로,

백업뿐 아니라 협업과 코드 리뷰까지 지원합니다.

 


 

Git의 핵심 구조 이해하기

 

Git을 이해하려면 먼저 파일이 이동하는 구조를 알아야 합니다.

 

Git은 크게 세 공간으로 나뉩니다.

 

 

1) Working Directory

 

실제로 내가 코드를 수정하는 작업 공간입니다.

 

예를 들어 main.java 파일을 열어서 코드를 수정하고 저장하는 곳이 바로 여기입니다.

 


 

2) Staging Area

 

커밋하기 전에 “이번에 저장할 변경 사항” 을 선택하는 공간입니다.

 

즉, 수정한 내용 중 필요한 부분만 골라서 저장할 수 있습니다.

 

예를 들어

 

  • 로그인 기능 추가
  • 주석 수정

 

이 두 가지를 동시에 수정했더라도

로그인 기능만 먼저 저장하고 싶다면 스테이징 영역을 활용합니다.

 


 

3) Repository

 

최종적으로 커밋이 저장되는 공간입니다.

 

여기에 기록된 내용은 Git이 버전별로 관리합니다.

 


 

파일 상태 변화 흐름

 

Git에서 파일은 다음 순서로 상태가 변합니다.

Untracked → Modified → Staged → Committed

 

Untracked

 

Git이 아직 관리하지 않는 새 파일

 

 

Modified

 

기존 파일을 수정한 상태

 

 

Staged

 

커밋할 준비가 된 상태

 

 

Committed

 

최종 저장 완료

 

이 흐름을 이해하면 Git 명령어가 훨씬 쉽게 보입니다.

 


 

가장 많이 사용하는 Git 명령어

 

실제로 가장 많이 쓰는 명령어들만 정리해보겠습니다.

 


 

저장소 생성

git init

현재 폴더를 Git 저장소로 만듭니다.

 

즉, 이 순간부터 Git이 파일 변경 이력을 추적하기 시작합니다.

 


 

현재 상태 확인

git status

현재 어떤 파일이 수정되었는지 확인합니다.

 

Git 입문에서 가장 자주 쓰는 명령어입니다.

 


 

스테이징

git add .

현재 변경된 파일 전체를 스테이징 영역으로 올립니다.

 

특정 파일만 추가할 수도 있습니다.

git add App.java

 


 

커밋

git commit -m "feat: 로그인 기능 추가"

변경 사항을 하나의 버전으로 저장합니다.

 

여기서 커밋 메시지는 매우 중요합니다.

 


 

원격 저장소 업로드

git push origin main

GitHub에 업로드하는 명령어입니다.

 


 

최신 코드 가져오기

git pull

팀원이 수정한 최신 코드를 가져옵니다.

 


 

실무에서 가장 중요한 Branch

 

실무에서는 대부분 메인 브랜치에서 바로 작업하지 않습니다.

 

예를 들어 로그인 기능을 만든다고 하면

git branch feature/login
git checkout feature/login

이렇게 별도의 브랜치에서 작업합니다.

 

왜냐하면 메인 코드에 영향을 주지 않으면서 안전하게 개발할 수 있기 때문입니다.

 

즉,

 

  • main = 배포용 안정 코드
  • feature = 개발 중 코드

 

라고 생각하면 됩니다.

 


 

Merge와 충돌

 

브랜치 작업이 끝나면 메인 브랜치에 합쳐야 합니다.

 

이 과정을 Merge라고 합니다.

git merge feature/login

하지만 같은 부분을 여러 명이 동시에 수정하면 충돌이 발생합니다.

 

예를 들어

 

  • A: 로그인 버튼 텍스트 수정
  • B: 같은 줄 디자인 수정

 

이 경우 Git이 자동으로 합치지 못합니다.

 

그래서 직접 어떤 코드를 남길지 선택해야 합니다.

 

이것이 바로 Conflict 해결입니다.

 

실무에서는 이 부분이 정말 중요합니다.

 


 

좋은 커밋 메시지 작성법

 

좋은 커밋 메시지는 협업 효율을 크게 높입니다.

 

추천 형식은 다음과 같습니다.

type: 내용

예시

feat: 회원가입 기능 추가
fix: 로그인 오류 수정
docs: README 수정
refactor: 예약 로직 구조 개선

이렇게 작성하면 나중에 기록을 볼 때 훨씬 이해하기 쉽습니다.

 


 

마무리

 

Git은 단순히 코드를 저장하는 도구가 아닙니다.

 

코드의 흐름을 기록하고, 실수를 복구하고, 협업을 가능하게 만드는 필수 기술입니다.

 

처음에는 명령어가 많아 복잡해 보일 수 있지만,

원리는 결국

 

수정 → 스테이징 → 커밋 → 업로드

 

이 흐름입니다.

 

사진은 저작권 상 첨부하지 못하였습니다;;ㅠㅠ

 

이 구조만 이해하면 금방 익숙해질 수 있습니다.

 

아자아자~!