Server , etc

Git 필수 명령어 총정리: 실무에서 자주 사용되는 깃 커맨드 모음

Chrysans 2025. 2. 18. 12:36
728x90
반응형

git

[목차]

  1. 개요
  2. 브랜치 관리 명령어
  3. 변경사항 관리
  4. 병합 및 리베이스
  5. 원격 저장소 관리
  6. 특수 상황별 명령어
  7. Git Reflog를 활용한 복구 작업
  8. 외부 링크

1. 개요

Git 현대 소프트웨어 개발에서 필수적인 버전 관리 도구입니다. 이 글에서는 실무에서 자주 사용되는 Git 명령어들을 체계적으로 정리했습니다. 특히 팀 협업 과정에서 유용하게 활용할 수 있는 명령어들을 중심으로 다루었습니다.

 

자주 사용되는 유용한 Git 명령어 모음

1. 브랜치 관리 명령어

브랜치 생성 및 전환

# 새 브랜치 생성
git branch 브랜치이름
# 현재 브랜치 기준으로 생성과 동시에 전환
git checkout -b 브랜치이름
# 현재 모든 브랜치 확인 (원격 포함)
git branch -a

 

브랜치 이름 변경

# 현재 브랜치 이름 변경
git branch -m 새로운이름
# 다른 브랜치 이름 변경
git branch -m 이전이름 새로운이름

 

2. 변경사항 관리

 

Stash 활용

# 현재 작업 임시 저장
git stash save "작업 중이던 로그인 기능"
# stash 목록 확인
git stash list
# 가장 최근 stash 적용하고 삭제
git stash pop
# 특정 stash 적용 (삭제 X)
git stash apply stash@{2}
# 모든 stash 삭제
git stash clear

 

변경사항 되돌리기

# 마지막 커밋 수정 (커밋 메시지 변경)
git commit --amend -m "새로운 커밋 메시지"
# 파일을 Unstaged 상태로 되돌리기
git restore --staged file.txt
# 워킹 디렉토리의 변경사항 되돌리기
git restore file.txt
# 특정 커밋으로 되돌리기 (이력 유지)
git revert abc123
# 강제로 특정 커밋으로 되돌리기 (이력 삭제)
git reset --hard abc123

3. 병합 및 리베이스

병합 (Merge)

# feature 브랜치를 main에 병합
git checkout main
git merge feature
# 병합 충돌 시 병합 취소
git merge --abort

리베이스 (Rebase)

# feature 브랜치를 main 위로 리베이스
git checkout feature
git rebase main
# 리베이스 중단
git rebase --abort
# 대화형 리베이스 (최근 3개 커밋 수정)
git rebase -i HEAD~3

4. 원격 저장소 관리

원격 저장소 연동

# 원격 저장소 추가
git remote add origin https://github.com/user/repo.git
# 원격 저장소 목록 확인
git remote -v
# 원격 브랜치 가져오기
git fetch origin
# 원격 변경사항 가져와서 병합
git pull origin main

강제 푸시 (주의 필요)

# 로컬 변경사항 강제 푸시
git push -f origin feature
# 특정 브랜치만 강제 푸시
git push origin +feature

5. 특수 상황에서 유용한 명령어

커밋 히스토리 관리

# 커밋 히스토리 확인
git log --oneline --graph --all
# 파일의 변경 이력 확인
git blame file.txt
# 특정 파일의 변경 내역 확인
git log -p file.txt

 

작업 내용 임시 저장

# 현재 변경사항 스택에 저장
git stash push -m "작업중인 내용"
# 특정 파일만 stash
git stash push -m "특정 파일만" file.txt
# stash 목록에서 특정 stash 삭제
git stash drop stash@{1}

 

브랜치 정리

# 병합완료된 브랜치 삭제
git branch --merged | grep -v "\*" | xargs -n 1 git branch -d
# 원격에서 삭제된 브랜치 로컬에서도 삭제
git fetch --prune

5-1. 유용한 설정 명령어

전역 설정

# 사용자 정보 설정
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 기본 브랜치 이름 설정
git config --global init.defaultBranch main
# 자동 줄바꿈 설정
git config --global core.autocrlf true  # Windows
git config --global core.autocrlf input # Mac/Linux

각 명령어는 상황에 따라 매우 유용하게 사용될 수 있으며, 특히 리베이스나 강제 푸시 같은 명령어는 팀 작업시 주의해서 사용해야 합니다.

Git Reflog를 활용한 복구 작업

1. Reflog 기본 사용

# 모든 HEAD 변경 이력 확인
git reflog

# 상세한 정보와 함께 확인
git reflog show --all

# 특정 브랜치의 reflog 확인
git reflog show feature/login

 

2. 실수로 삭제한 브랜치 복구

# 실수로 브랜치를 삭제했을 때
git branch feature/login HEAD@{2}   # reflog에서 확인한 시점으로 브랜치 복구

# 또는 해시값으로 복구
git branch feature/login 789abc     # reflog에서 확인한 해시값으로 복구

 

3. Reset 실수 복구

# hard reset 실수 복구
git reset --hard HEAD@{1}          # 바로 이전 상태로 복구

# 더 오래된 시점으로 복구
git reset --hard HEAD@{5}          # 5번 전 상태로 복구

 

4. 리베이스 실수 복구

# 리베이스 직전 상태로 복구
git reflog
git reset --hard HEAD@{5}          # reflog에서 리베이스 전 위치 확인 후 복구

# ORIG_HEAD를 이용한 복구 (리베이스 직후에만 가능)
git reset --hard ORIG_HEAD

 

5. 병합 실수 복구

# 잘못된 병합 직전으로 복구
git reflog
git reset --hard HEAD@{1}          # 병합 직전 상태로 복구

6. 고급 Reflog 활용

특정 시간대의 작업 복구

# 1시간 전의 상태로 복구
git reflog show HEAD@{1.hour.ago}

# 어제 마지막 상태로 복구
git reflog show HEAD@{yesterday}

# 특정 날짜의 상태로 복구
git reflog show HEAD@{2023-12-25}

 

삭제된 커밋 복구

# reflog에서 삭제된 커밋 찾기
git reflog show --all | grep "커밋메시지"

# 찾은 커밋으로 새 브랜치 생성
git branch recovery-branch HEAD@{2}

 

7. Reflog 관리

# reflog 만료 기간 설정 (기본 30일)
git config --global gc.reflogExpire "90 days"

# 모든 reflog 항목 삭제
git reflog expire --expire=now --all

# 특정 레퍼런스의 reflog만 삭제
git reflog expire --expire=now refs/heads/feature

 

주의사항

  1. Reflog는 로컬 저장소에만 있는 정보입니다
  2. 기본적으로 30일간만 보관됩니다
  3. git clone 후에는 이전 reflog 정보가 없습니다
  4. 정기적으로 git gc가 실행되면 만료된 reflog 항목은 삭제됩니다

이렇게 reflog는 Git을 사용하면서 발생할 수 있는 다양한 실수를 복구하는데 매우 강력한 도구입니다. 특히 리베이스나 reset 같은 위험한 작업을 할 때 안전망 역할을 합니다.

 

 

728x90
반응형