Post

Git 사용법 및 브랜치 전략

Git 용법

Git 사용법 및 브랜치 전략

Git & GitHub 핵심 가이드북


1. Git 기본 명령어

저장소 생성 및 가져오기

  • git init
    • 현재 디렉토리를 Git 로컬 저장소로 초기화한다. (.git 폴더 생성)
  • git clone <원격-저장소-URL>
    • 원격 저장소의 프로젝트를 로컬 컴퓨터에 그대로 다운로드한다.

상태 확인 및 브랜치 관리

  • git status
    • 현재 브랜치 상태, 변경된 파일 명칭, 스테이징(add) 여부 등을 출력한다.
  • git branch
    • 전체 브랜치 목록을 출력한다. * 표시가 있는 곳이 현재 활성화된 브랜치다.
  • git switch -c <새-브랜치명>
    • 지정한 이름으로 브랜치를 새로 생성하고, 동시에 해당 브랜치로 이동한다.
    • (기존에 존재하는 브랜치로 이동할 때는 -c 없이 git switch <브랜치명>만 사용)

변경사항 기록 (Commit)

  • git add <경로>
    • 변경사항이 있는 파일들을 스테이징 영역(Commit 대기 상태)에 추가한다.
    • git add . : 현재 디렉토리 및 하위 폴더의 모든 변경사항을 추가한다.
    • git add ./Source/... : 특정 폴더나 파일 경로를 지정하여 선택적으로 추가한다.
  • git commit -m "<커밋-메시지>"
    • add된 파일들을 하나의 버전으로 기록하며, 대화상자 없이 쌍따옴표 내의 내용을 로그로 작성한다.

원격 저장소 동기화 (Push & Pull)

  • git fetch
    • 원격 저장소의 최신 이력을 확인하고 새로고침한다. (로컬 코드는 변경되지 않음)
  • git pull
    • 원격 저장소의 최신 코드를 가져와서 현재 로컬 브랜치에 병합(Merge)한다.
  • git push
    • 로컬에서 완료된 커밋들을 원격 저장소로 업로드한다.

2. 가끔 쓰는 명령어

git reset 옵션 세부 사양

단순히 명령어 취소 외에, 상황에 맞게 3가지 옵션으로 제어해야 안전하다.

  • git reset --soft HEAD~1 : 최신 커밋 1개를 취소하지만, 내가 수정한 코드는 add된 상태로 그대로 유지한다.
  • git reset --mixed HEAD~1 : 기본값이다. 최신 커밋과 add를 모두 취소하지만, 작성한 코드는 로컬에 그대로 남겨둔다.
  • git reset --hard HEAD~1 : [주의] 최신 커밋, add, 그리고 작성 중이던 코드까지 모두 지정한 커밋 시점으로 강제 복구하며 삭제한다.

새 브랜치 최초 Push 설정

로컬에서 새로 만든 브랜치를 원격 저장소에 처음 올릴 때는, 원격 브랜치와의 추적 관계 설정을 위해 아래 명령어를 사용해야 에러가 나지 않는다.

  • git push -u origin <브랜치명> (이후부터는 git push만 입력해도 자동으로 추적하여 업로드됨)

현 브랜치 다시 로딩하기

git restore . : 현재 작업했던 내역들을 없애고, 마지막 커밋된 내용들로 다시 로딩된다.


3. 표준 작업 흐름 (Workflow)

“1 브랜치 = 1 PR(Pull Request) = 1 커밋”을 유지하여 버전 관리의 복잡성을 줄이고 가독성을 높이는 정석 루틴이다.

핵심 원칙

  • 메인 브랜치(main, master, dev)는 항상 배포 및 빌드가 가능한 안정 상태를 유지한다.
  • 모든 신규 개발 및 수정은 메인 브랜치에서 분기한 별도의 기능 브랜치(feat/기능명)에서 수행한다.

실전 작업 절차 (예시: PlayerController 개발)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 1. 메인 브랜치로 이동 후 원격의 최신 변경사항을 반영한다.
git switch main
git fetch
git pull

# 2. 최신화된 메인 브랜치를 기준으로 새 작업 브랜치를 생성하고 이동한다.
git switch -c feat/playercontroller-create

# 3. 현재 브랜치가 올바르게 변경되었는지 검증한다.
git branch

# 4. 소스 코드 수정 및 개발 작업을 진행한다.

# 5. 작업이 끝나면 변경된 파일들을 확인하고 스테이징 영역에 올린다.
git add .
git status

# 6. 구현 내용을 명확히 기술한 커밋을 생성한다.
git commit -m "feat: 플레이어 컨트롤러 생성"

# 7. 생성한 기능 브랜치를 원격 저장소에 업로드한다.
git push -u origin feat/playercontroller-create

# 8. 푸시 완료 후, 다음 작업을 위해 다시 메인 브랜치로 복귀한다.
git switch main
This post is licensed under CC BY 4.0 by the author.