목차

    💡 Tech Note

    [Git] 실무 핵심 명령어 요약 및 자동 업로드 스크립트(.sh) 공유

    this.Serena 2026. 2. 19. 03:50

    🛠️ Git 초기 설정 및 저장소 생성

    개발 시작 전 사용자 정보를 등록하고 저장소를 준비하는 단계임

    명령어 설명
    git config --global user.name "이름" 사용자 이름 전역 설정
    git config --global user.email "이메일" 사용자 이메일 전역 설정
    git config --list 현재 설정된 모든 Git 정보 확인
    git init 현재 디렉토리를 로컬 Git 저장소로 초기화
    git clone <URL> 원격 저장소의 내용을 로컬로 복제

    📝 기본 워크플로우 (변경사항 관리)

    파일을 수정하고 기록을 남기는 가장 빈번한 작업 과정임

    • git status: 현재 작업 디렉토리의 파일 상태(추적 여부 등) 확인
    • git add <파일>: 특정 파일을 스테이징 영역(Staging Area)에 추가
    • git add .: 변경된 모든 파일을 한 번에 스테이징 영역에 추가
    • git commit -m "메시지": 스테이징된 변경사항을 커밋 메시지와 함께 기록
    • git commit -am "메시지": add와 commit을 동시에 수행 (단, 이미 추적 중인 파일만 가능)

    Tip: 커밋 메시지는 협업의 핵심임. 'Fix: ...', 'Feat: ...' 등의 컨벤션을 활용하는 것을 추천함


    🌿 브랜치 관리 (협업 및 기능 분리)

    독립적인 작업 환경을 만들고 병합하는 과정임

    • git branch: 로컬 브랜치 목록 확인 및 현재 브랜치 표시
    • git branch <브랜치명>: 새로운 브랜치 생성
    • git checkout <브랜치명>: 해당 브랜치로 전환
    • git checkout -b <브랜치명>: 브랜치 생성과 전환을 동시에 수행
    • git branch -d <브랜치명>: 병합이 완료된 브랜치 삭제
    • git merge <브랜치명>: 현재 브랜치에 다른 브랜치의 변경사항을 병합

    🌐 원격 저장소 (Remote)

    GitHub 등 외부 저장소와 데이터를 주고받는 단계임

    • git remote add origin <URL>: 원격 저장소 주소를 origin이라는 별칭으로 등록
    • git remote -v: 연결된 원격 저장소 목록 및 상세 주소 확인
    • git push origin <브랜치>: 로컬 커밋 내역을 원격 저장소에 반영
    • git push -u origin main: 최초 푸시 시 원격 브랜치와 로컬 브랜치를 연결 (이후 git push만으로 가능)
    • git pull origin <브랜치>: 원격 저장소의 변경사항을 가져와 로컬에 즉시 병합
    • git fetch: 원격의 변경 내역만 가져오기 (병합은 별도 진행 필요)

    🔍 기록 조회 및 변경 확인

    과거 기록을 추적하거나 차이점을 비교함

    • git log: 전체 커밋 히스토리 조회
    • git log --oneline: 커밋 정보를 한 줄씩 간결하게 요약 조회
    • git log --graph: 브랜치와 병합 내역을 시각적인 그래프로 표시
    • git show <커밋>: 특정 커밋에서 변경된 상세 내용 확인
    • git diff: 커밋 전, 파일 간의 구체적인 소스 코드 차이점 비교

    ⚠️ 취소 및 복구 (Reset & Revert)

    잘못된 작업을 되돌려야 할 때 사용함

    Reset vs Revert 차이점

    구분 명령어 특징
    Reset (Soft) git reset --soft HEAD~1 커밋만 취소, 파일 수정 내역은 스테이징 상태로 유지
    Reset (Hard) git reset --hard HEAD~1 커밋과 수정 내역 모두 삭제 (복구 어려우니 주의)
    Revert git revert <커밋> 기존 기록은 남겨두고 취소했다는 새로운 커밋 생성
    • git reset HEAD <파일>: 스테이징된 파일을 다시 워킹 디렉토리로 내림 (Unstage)
    • git checkout -- <파일>: 파일의 변경사항을 마지막 커밋 상태로 되돌림

    📦 임시 저장 (Stash)

    작업 중 갑자기 브랜치를 바꿔야 할 때 변경사항을 잠시 보관함

    1. git stash: 현재 작업을 임시 저장소에 보관하고 워킹 디렉토리를 깨끗하게 비움
    2. git stash list: 임시 저장된 목록 확인
    3. git stash apply: 가장 최근의 stash 내용을 다시 불러옴
    4. git stash pop: 최근 stash를 불러오면서 목록에서 삭제
    5. git stash drop: 불필요한 stash 내역 삭제

     


     

    ✨ Bonus: 데일리 자동 업로드 스크립트

    1. git-push.sh (데일리 업로드용)

    가장 기본적으로 사용하는 자동 업로드 스크립트. 실행 시 오늘 날짜로 커밋 메시지를 자동 생성하여 푸시

    #!/bin/bash
    # 변경사항 스테이징
    git add .
    
    # 오늘 날짜로 커밋 메시지 생성 (예: 2026-02-19)
    git commit -m "$(date '+%Y-%m-%d')"
    
    # 원격 저장소로 푸시 (main 브랜치 기준)
    git push origin main

    Git Push.sh
    0.00MB

     

    2. git-pull.sh (동기화용)

    원격 저장소의 최신 내용을 안전하게 가져와 로컬에 반영할 때 사용

    #!/bin/bash
    # 원격 저장소의 최신 변경사항 가져오기
    echo "Fetching from remote..."
    git fetch origin
    
    # 현재 브랜치에 병합
    echo "Pulling changes..."
    git pull origin main

    pull.sh
    0.00MB

     

    3. pull-force.sh (강제 동기화용)

    로컬의 작업 내용이 꼬였거나, 무조건 원격 저장소의 상태와 동일하게 맞추고 싶을 때 사용하는 강력한 스크립트임⚠️

    #!/bin/bash
    
    echo "⚠️  경고: 로컬 변경사항이 영구 삭제됩니다!"
    echo "데이터 손실 위험이 있으니 백업 후 진행하세요."
    echo "계속하시겠습니까? (y/N): "
    read confirm
    
    if [[ $confirm =~ ^[Yy]$ ]]; then
      git fetch origin
      git reset --hard origin/main
      echo "✅ 강제 풀 완료."
    else
      echo "❌ 취소됨."
    fi

    pull-force.sh
    0.00MB