안녕하세요! 코딩을 시작하셨거나, 이미 하고 계신 분이라면 한 번쯤 Git 명령어 때문에 골머리를 앓아본 경험이 있으실 거예요. Git은 개발자에게 필수적인 도구이지만, 그 방대한 명령어와 복잡한 개념 때문에 처음 접하는 분들은 많이 어려워합니다. 저도 처음에는 git status와 git add .만으로 겨우 버티던 시절이 있었죠. 하지만 포기하지 않고 꾸준히 사용하다 보니, 이제는 Git 커밋부터 Git 브랜치 관리까지 훨씬 수월하게 느껴집니다.
이 글은 바로 그런 여러분을 위해 준비했어요. 무작정 모든 명령어를 나열하는 대신, 우리가 실제로 프로젝트를 진행하면서 마주치는 다양한 상황별 Git 명령어들을 정리해 보았습니다. 이 가이드를 통해 여러분도 Git을 능숙하게 다루고, 더 효율적으로 협업하며 개발할 수 있게 될 거예요. 자, 그럼 시작해 볼까요?
1. 프로젝트 시작과 초기 설정: 첫걸음을 내딛는 순간
새로운 프로젝트를 시작할 때 가장 먼저 해야 할 일은 무엇일까요? 바로 프로젝트 폴더를 Git 저장소로 만드는 것입니다. 이 단계에서 가장 중요한 명령어들을 알아봅시다.
H3: 로컬 저장소 생성하기: git init
가장 기본 중의 기본입니다. 프로젝트 폴더 안에서 이 명령어를 실행하면, 해당 폴더가 Git 저장소로 초기화됩니다. .git이라는 숨김 폴더가 생성되는데, 이곳에 모든 버전 관리 정보가 저장됩니다.
Bash
git init
H3: 원격 저장소와 연결하기: git remote
이제 로컬 저장소를 GitHub, GitLab 같은 원격 저장소와 연결해야 합니다. 주로 사용하는 명령어는 git remote add origin [원격 저장소 URL]입니다. 여기서 origin은 원격 저장소에 대한 별명이라고 생각하면 편해요.
Bash
git remote add origin https://github.com/사용자이름/프로젝트이름.git
H3: 파일 추가 및 커밋하기: git add와 git commit
새로운 파일을 만들거나 기존 파일을 수정했다면, Git 커밋을 위해 준비해야 합니다. git add 명령어로 변경된 파일을 스테이징 영역(Staging Area)에 올리고, git commit으로 최종적으로 버전을 기록합니다.
Bash
# 특정 파일만 추가
git add index.html
# 모든 변경사항 추가
git add .
# 메시지와 함께 커밋
git commit -m "첫 번째 커밋: 프로젝트 초기 설정"
꿀팁:
git commit메시지를 작성할 때는 ‘명령형 동사’를 사용하는 것이 좋습니다. 예를 들어 “Add new feature”보다는 “Add login feature”처럼 구체적으로 작성하면 나중에 변경 이력을 파악하기 훨씬 쉽습니다.
2. 일상적인 작업과 버전 관리: 매일 마주치는 상황들

이제 본격적으로 코딩을 하면서 반복적으로 사용하게 될 명령어들을 살펴봅시다.
H3: 현재 상태 확인하기: git status
Git을 사용하면서 가장 자주 사용하는 명령어일 겁니다. 현재 작업 디렉터리의 상태를 보여줍니다. 어떤 파일이 수정되었는지, 스테이징 영역에 올라갔는지, 커밋할 준비가 되었는지 등을 한눈에 확인할 수 있습니다.
Bash
git status
H3: 변경 내용 비교하기: git diff
git diff는 커밋되지 않은 변경 사항들을 자세히 보여줍니다. git diff만 입력하면 작업 디렉터리와 스테이징 영역의 차이를, git diff --staged를 입력하면 스테이징 영역과 마지막 커밋의 차이를 확인할 수 있습니다.
Bash
# 커밋되지 않은 변경 사항 확인
git diff
# 스테이징 영역에 있는 변경 사항 확인
git diff --staged
H3: 원격 저장소에 올리기: git push
로컬에서 Git 커밋을 완료했다면, 이제 이 변경 사항을 원격 저장소에 공유해야겠죠. git push 명령어가 바로 그 역할을 합니다. 처음 푸시할 때는 git push -u origin [브랜치이름]을 사용하여 로컬 브랜치와 원격 브랜치를 연결해 주는 것이 좋습니다.
Bash
git push
H3: 원격 저장소 내용 가져오기: git pull
협업 프로젝트에서는 다른 팀원이 올린 변경 사항을 내 로컬 저장소로 가져와야 합니다. git pull은 원격 저장소의 내용을 가져와서 현재 브랜치에 자동으로 병합(merge)해 줍니다.
Bash
git pull origin main
FAQ:
git pull과git fetch의 차이점은 무엇인가요?
git fetch는 원격 저장소의 최신 커밋 이력만 가져올 뿐, 내 로컬 작업 디렉터리에는 반영하지 않습니다. 반면git pull은git fetch를 실행한 후, 자동으로git merge까지 해주는 명령어입니다. 즉,git pull = git fetch + git merge라고 생각하면 쉽습니다. 다른 사람의 변경사항을 먼저 확인하고 싶을 때는git fetch를 사용하면 유용합니다.
이 방법을 사용하면 로컬에서 변경한 모든 내용이 삭제되고 원격 저장소의 상태 그대로 로컬 저장소가 초기화됩니다. 따라서 중요한 변경 내용이 있으면 미리 백업하거나 git stash로 임시 저장하는 것이 좋습니다.
요약 명령어 예:
git fetch origin
git reset --hard origin/feature-dev
3. 협업과 브랜치 관리: 효율적인 개발의 핵심
프로젝트의 규모가 커지고 여러 사람이 함께 작업할 때는 Git 브랜치의 활용이 필수적입니다. 브랜치는 독립적인 작업 공간을 만들어 충돌을 줄이고 안정적으로 기능을 개발할 수 있게 해줍니다.
H3: 브랜치 생성 및 전환: git branch와 git checkout
새로운 기능을 개발하거나 버그를 수정할 때, main 브랜치에 직접 작업하기보다는 새로운 브랜치를 만들어 작업하는 것이 좋습니다.
Bash
# 브랜치 목록 확인
git branch
# 새로운 브랜치 생성
git branch feat/new-feature
# 브랜치 전환
git checkout feat/new-feature
# 브랜치 생성과 동시에 전환
git checkout -b feat/new-feature
H3: 브랜치 병합: git merge
개발이 완료된 브랜치는 main 브랜치로 병합해야 합니다. git checkout main으로 main 브랜치로 이동한 뒤, git merge 명령어를 사용합니다.
Bash
# main 브랜치로 이동
git checkout main
# feat/new-feature 브랜치를 main 브랜치로 병합
git merge feat/new-feature
병합 과정에서 충돌(conflict)이 발생할 수 있습니다. 이때는 충돌이 난 파일을 열어 내용을 직접 수정하고, git add와 git commit으로 충돌을 해결했다고 알려줘야 합니다.
H3: 브랜치 삭제: git branch -d
기능 개발이 완료되고 병합까지 마친 브랜치는 삭제해도 무방합니다.
Bash
# 로컬 브랜치 삭제
git branch -d feat/new-feature
# 원격 브랜치 삭제
git push origin --delete feat/new-feature
4. 과거로 돌아가기: 실수했을 때 대처법
Git의 가장 큰 장점 중 하나는 과거의 특정 시점으로 돌아갈 수 있다는 점입니다. 잘못 커밋했거나, 원하지 않는 변경사항을 되돌려야 할 때 유용한 명령어들을 알아봅시다.
H3: 커밋 되돌리기: git revert
특정 커밋의 변경 사항을 되돌리는 새로운 커밋을 생성합니다. 기존 커밋 이력은 그대로 남기 때문에, 팀원들과 협업할 때 안전하게 사용할 수 있는 방법입니다.
Bash
# 특정 커밋 되돌리기
git revert [커밋 해시]
H3: 강제로 되돌리기: git reset
git reset은 커밋 이력을 지우거나, 스테이징 영역의 상태를 되돌리는 강력한 명령어입니다. Git 커밋 이력을 실제로 삭제하기 때문에 주의해서 사용해야 합니다.
Bash
# 마지막 커밋을 취소하고, 변경 사항을 스테이징 영역에 남김
git reset --soft HEAD^
# 마지막 커밋을 취소하고, 변경 사항을 작업 디렉터리에 남김
git reset --mixed HEAD^
# 마지막 커밋을 취소하고, 변경 사항을 모두 삭제
git reset --hard HEAD^
주의:
git reset --hard는 변경 사항을 영구적으로 삭제하기 때문에 매우 신중하게 사용해야 합니다. 특히 이미 원격 저장소에 푸시한 커밋이라면 절대 사용하면 안 됩니다.
5. 마치며: Git, 이제 두렵지 않으시죠?
지금까지 상황별 Git 명령어들을 함께 살펴보았습니다. Git은 단순히 코드를 저장하는 공간이 아니라, 개발 과정 전체를 효율적으로 관리하고 팀원들과 협업할 수 있게 돕는 강력한 도구입니다. 처음에는 어렵게 느껴지더라도, git status를 자주 사용하면서 현재 상태를 확인하고, Git 커밋과 Git 브랜치 관리 연습을 꾸준히 한다면 분명 능숙하게 다룰 수 있게 될 거예요.
오늘 배운 내용들을 바탕으로 여러분의 프로젝트에 바로 적용해 보세요. 혹시 궁금한 점이 있다면 언제든지 댓글로 질문해 주세요. 여러분의 성공적인 개발 여정을 응원합니다!