728x90
반응형
[목차]
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
주의사항
- Reflog는 로컬 저장소에만 있는 정보입니다
- 기본적으로 30일간만 보관됩니다
git clone
후에는 이전 reflog 정보가 없습니다- 정기적으로
git gc
가 실행되면 만료된 reflog 항목은 삭제됩니다
이렇게 reflog는 Git을 사용하면서 발생할 수 있는 다양한 실수를 복구하는데 매우 강력한 도구입니다. 특히 리베이스나 reset 같은 위험한 작업을 할 때 안전망 역할을 합니다.
외부 링크 추천
728x90
반응형
'Server , etc' 카테고리의 다른 글
RSA(암호화 알고리즘) /SSH(보안 셸) 간단 정리 (0) | 2023.06.23 |
---|---|
자료 구조 / data structure , 자료구조란 (0) | 2023.04.24 |
오늘의 에러 <리액트,react 에러> (You are running `create-react-app` 5.0.0, which is behind the latest release (5.0.1)) (0) | 2022.04.29 |
SOP(same origin policy)-동일 출처 정책,CORS(cross origin resource sharing)-교차 출처 리소스 공유 (0) | 2022.03.31 |
쿠키,세션,캐시 (cookie, session, cache) 간단하 (0) | 2022.03.30 |