Git은 현대 소프트웨어 개발에서 필수적인 버전 관리 시스템입니다. 이 글에서는 Git의 주요 명령어들을 단계별로 정리하여, 초보자부터 실무자까지 활용할 수 있도록 구성했습니다.
Git 시작하기
Git을 처음 사용하기 전에 사용자 정보를 설정해야 합니다. 이 정보는 모든 커밋에 기록됩니다.
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
설정된 정보를 확인하려면 다음 명령어를 사용합니다.
git config --list
저장소 초기화 및 클론
새로운 Git 저장소를 만들거나 기존 저장소를 가져오는 것이 Git 작업의 시작점입니다.
새로운 저장소를 초기화할 때는 git init 명령어를 사용합니다. 이 명령어는 현재 디렉토리를 Git 저장소로 만들어줍니다.
git init
원격 저장소를 로컬로 복제할 때는 git clone 명령어를 사용합니다.
git clone <repository-url>
기본 작업 흐름
Git의 기본 작업 흐름은 파일 수정, 스테이징, 커밋의 세 단계로 이루어집니다.
현재 작업 디렉토리의 상태를 확인하려면 git status 명령어를 사용합니다. 이 명령어는 수정된 파일, 스테이징된 파일, 추적되지 않는 파일 등을 보여줍니다.
git status
파일을 스테이징 영역에 추가할 때는 git add 명령어를 사용합니다.
git add <filename> # 특정 파일 추가
git add . # 현재 디렉토리의 모든 변경사항 추가
git add -A # 저장소 전체의 모든 변경사항 추가
스테이징된 변경사항을 커밋할 때는 git commit 명령어를 사용합니다.
git commit -m "커밋 메시지"
git commit -am "커밋 메시지" # add와 commit을 동시에 (추적 중인 파일만)
브랜치 관리
브랜치는 독립적인 작업 공간을 만들어 병렬 개발을 가능하게 합니다.
현재 브랜치 목록을 확인하려면 git branch 명령어를 사용합니다.
git branch # 로컬 브랜치 목록
git branch -a # 모든 브랜치 목록 (원격 포함)
git branch -r # 원격 브랜치 목록
새로운 브랜치를 생성할 때도 같은 명령어를 사용합니다.
git branch <branch-name>
브랜치를 전환할 때는 git checkout 또는 git switch 명령어를 사용합니다.
git checkout <branch-name>
git switch <branch-name> # Git 2.23 이상
브랜치 생성과 전환을 동시에 하려면 다음과 같이 사용합니다.
git checkout -b <branch-name>
git switch -c <branch-name>
브랜치를 삭제할 때는 다음 명령어를 사용합니다.
git branch -d <branch-name> # 병합된 브랜치 삭제
git branch -D <branch-name> # 강제 삭제
병합과 충돌 해결
다른 브랜치의 변경사항을 현재 브랜치에 병합할 때는 git merge 명령어를 사용합니다.
git merge <branch-name>
병합 중 충돌이 발생하면 수동으로 파일을 수정한 후 다음과 같이 진행합니다.
# 1. 충돌 파일 수정
# 2. git add <충돌-파일>
# 3. git commit
병합을 취소하고 싶을 때는 다음 명령어를 사용합니다.
git merge --abort
원격 저장소 작업
원격 저장소와의 연결 및 동기화는 협업에서 필수적입니다.
원격 저장소를 추가할 때는 git remote 명령어를 사용합니다.
git remote add origin <repository-url>
git remote -v # 원격 저장소 목록 확인
로컬 변경사항을 원격 저장소에 업로드할 때는 git push 명령어를 사용합니다.
git push origin <branch-name>
git push -u origin <branch-name> # 업스트림 설정
git push --all # 모든 브랜치 푸시
원격 저장소의 변경사항을 가져올 때는 git pull 또는 git fetch 명령어를 사용합니다.
git pull origin main # fetch + merge를 한번에 실행
git fetch origin # 변경사항만 가져오기
git pull은 내부적으로 다음 두 명령어를 순차 실행합니다.
git fetch origin main # 원격 변경사항 다운로드
git merge origin/main # 현재 브랜치에 병합
안전한 작업을 위해 fetch로 먼저 확인하고 merge하는 것을 권장합니다.
git fetch origin
git log HEAD..origin/main # 변경사항 확인
git merge origin/main # 확인 후 병합
변경 이력 조회
프로젝트의 히스토리를 확인하는 것은 디버깅과 협업에 중요합니다.
커밋 로그를 확인할 때는 git log 명령어를 사용합니다.
git log
git log --oneline # 한 줄로 간략하게
git log --graph # 그래프 형태로
git log --all --graph --oneline # 모든 브랜치를 그래프로
git log -p # 변경 내용까지 표시
git log -n 5 # 최근 5개 커밋만
특정 파일의 변경 이력을 확인하려면 다음과 같이 사용합니다.
git log <filename>
변경사항을 확인할 때는 git diff 명령어를 사용합니다.
git diff # 작업 디렉토리와 스테이징 영역 비교
git diff --staged # 스테이징 영역과 마지막 커밋 비교
git diff <branch1> <branch2> # 브랜치 간 비교
변경사항 되돌리기
실수를 수정하거나 이전 상태로 되돌리는 작업은 자주 필요합니다.
작업 디렉토리의 변경사항을 취소할 때는 git restore 명령어를 사용합니다.
git restore <filename> # Git 2.23 이상
git checkout -- <filename> # 이전 버전
스테이징 영역에서 제거할 때는 다음과 같이 사용합니다.
git restore --staged <filename>
git reset HEAD <filename> # 이전 버전
커밋을 되돌릴 때는 git revert 또는 git reset 명령어를 사용합니다.
git revert <commit-hash> # 새로운 커밋으로 되돌리기 (권장)
git reset --soft HEAD~1 # 커밋만 취소
git reset --mixed HEAD~1 # 커밋과 스테이징 취소 (기본값)
git reset --hard HEAD~1 # 모든 변경사항 취소 (주의!)
임시 저장
작업 중인 변경사항을 임시로 저장하고 나중에 다시 적용할 때는 git stash 명령어를 사용합니다.
git stash # 현재 변경사항 임시 저장
git stash save "메시지" # 메시지와 함께 저장
git stash list # 저장된 목록 확인
git stash apply # 가장 최근 stash 적용
git stash apply stash@{n} # 특정 stash 적용
git stash pop # 적용하고 목록에서 제거
git stash drop stash@{n} # 특정 stash 삭제
git stash clear # 모든 stash 삭제
태그 관리
특정 커밋에 버전 정보를 표시할 때는 태그를 사용합니다.
git tag # 태그 목록 확인
git tag <tag-name> # 경량 태그 생성
git tag -a <tag-name> -m "메시지" # 주석 태그 생성
git tag -d <tag-name> # 태그 삭제
git push origin <tag-name> # 태그 푸시
git push origin --tags # 모든 태그 푸시
유용한 고급 명령어
실무에서 자주 사용되는 고급 명령어들입니다.
여러 커밋을 하나로 합치거나 순서를 변경할 때는 git rebase 명령어를 사용합니다.
git rebase <branch-name>
git rebase -i HEAD~3 # 최근 3개 커밋 수정
특정 커밋만 가져올 때는 git cherry-pick 명령어를 사용합니다.
git cherry-pick <commit-hash>
파일을 Git 추적에서 제거할 때는 다음과 같이 사용합니다.
git rm <filename> # 파일 삭제 및 스테이징
git rm --cached <filename> # Git 추적만 제거 (파일 유지)
마무리
Git은 강력한 도구이지만 명령어가 많아 처음에는 어렵게 느껴질 수 있습니다. 하지만 기본적인 작업 흐름인 add, commit, push, pull만 익혀도 충분히 사용할 수 있으며, 필요에 따라 다른 명령어들을 점진적으로 학습하면 됩니다.
실수를 두려워하지 마세요. Git은 거의 모든 작업을 되돌릴 수 있도록 설계되어 있습니다. 테스트 저장소를 만들어 다양한 명령어를 실험해보면서 익히는 것이 가장 좋은 학습 방법입니다.
'프로그래밍' 카테고리의 다른 글
| 터미널에서 AI와 코딩하기: Claude Code 명령어 완전 정복 (0) | 2025.07.20 |
|---|---|
| LLM 프롬프트 엔지니어링: 인공지능과 더 똑똑하게 대화하는 법 (0) | 2025.06.06 |
| MCP란 무엇인가? 비전공자도 쉽게 이해하는 가이드 (0) | 2025.06.04 |
| 소프트웨어 개발에서 SOP가 뭔가요? 쉽게 풀어드립니다! (0) | 2025.06.03 |
| IPv6, 인터넷의 새로운 주소체계: 비전공자를 위한 쉬운 안내 (0) | 2025.05.17 |