프로그래밍

Git 명령어 완벽 가이드: 기초부터 실무까지

threekingdoms 2025. 10. 27. 14:35
반응형

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은 거의 모든 작업을 되돌릴 수 있도록 설계되어 있습니다. 테스트 저장소를 만들어 다양한 명령어를 실험해보면서 익히는 것이 가장 좋은 학습 방법입니다.

반응형