Project/Git, Github

[Git].ch2.유용한 명령어

JSJH._. 2026. 1. 20. 19:19

[Git].ch2. 브랜치(Branch)와 유용한 명령어

깃을 쓰면서 유용하게 사용할수있는 명령어들 입니다. IDE내부에서 쓰면 명령어 없이 클릭으로만 여러가지 기능을 할수있지만 터미널에서 쓰는 경우도 많기에 유용한 명령어는 익히면 좋은거 같습니다.

1. Branch (브랜치)

브랜치 의미와 명령어

프로젝트의 복사본을 만들어서 거기서 먼저 개발을 진행할 때 사용합니다.
업데이트 할때는 원본을 해치지 않으면서 개발 해야할때도 많으니까요.

  • git branch 브랜치이름: 프로젝트 사본(브랜치) 하나 생성
  • git switch 브랜치이름: 해당 브랜치로 이동
  • git switch main: 다시 main 브랜치로 이동
  • git status: 현재 내가 위치한 브랜치 정보 확인
  • git log --graph --oneline --all: 브랜치와 커밋 내역을 한 눈에 그래프로 확인

Branch 합치기 (Merge)

작업이 끝난 브랜치를 원본(main)에 합칠 때 사용합니다.

git switch main       # 1. main 브랜치로 이동
git merge 브랜치명    # 2. 해당 브랜치를 main에 병합

주의사항: Merge Conflict (충돌)

main 브랜치와 대상 브랜치에서 같은 파일의 같은 줄을 수정했을 경우 발생합니다.

  • 해결법:
    1. 에디터에서 충돌난 파일 확인
    2. <<<<, ====, >>>> 중 원하는 코드만 남기고 삭제 (VS Code 버튼 활용 가능)
    3. git add 파일명 -> git commit -m '메세지'

2. 다양한 Git Merge 방식

이건 그냥 여러 방법론입니다. 그냥 상황에 맞춰서 좋은걸 사용하면 될거 같아요.

3-way merge (기본)

  • 각 브랜치에 신규 커밋이 1회 이상 있는 경우
  • 두 브랜치의 코드를 합쳐서 새로운 커밋을 생성합니다.

Fast-forward merge

  • 기준 브랜치(main)에는 신규 커밋이 없고, 새 브랜치에만 커밋이 있는 경우
  • main 브랜치의 위치만 새 브랜치 끝으로 이동합니다. (새 커밋 생성 X)
  • git merge --no-ff 브랜치명: 강제로 3-way merge를 해서 커밋을 남길 수도 있습니다.

Rebase and Merge

  • 브랜치의 시작점을 main의 최신 커밋으로 옮겨서(rebase) 합치는 방식입니다.
  • 커밋 내역이 한 줄로 정리되어 깔끔해집니다.
    git switch 새로운브랜치
    git rebase main    # 시작점 이동
    git switch main
    git merge 새로운브랜치

Squash and Merge

  • 새 브랜치의 모든 커밋 내역을 하나로 압축(Squash) 해서 main에 합칩니다.
  • 자잘한 커밋 내역이 남지 않아 main 브랜치가 깔끔해집니다.
    git switch main
    git merge --squash 브랜치명
    git commit -m '메세지'

3. 되돌아가기 (Undo)

코딩하면서 제일 많이 필요한 ctrl+z 와 같은 기능이에요.

파일 되돌리기 (restore)

  • git restore 파일명: 파일을 최근 커밋 상태로 복구
  • git restore --staged 파일명: add 했던(스테이징된) 파일을 취소

커밋 취소하기 (revert)

  • git revert 커밋ID: 해당 커밋에서 했던 작업을 취소하는 새로운 커밋을 생성합니다.
  • 협업 시에는 기존 내역을 건드리지 않는 revert를 사용하는 것이 안전합니다.

과거로 돌아가기 (reset)

  • git reset --hard 커밋ID: 해당 커밋 시점으로 아예 돌아갑니다. (이후 내역 삭제)
  • 옵션 차이:
    • --hard: 돌아간 시점 이후의 파일 수정 내역 다 삭제
    • --soft: 지워진 커밋의 내용이 스테이징(add) 상태로 남음
    • --mixed: 지워진 커밋의 내용이 add 되지 않은 상태로 남음

이미지 출처

제가 git/github를 배우면서 봤던 코딩애플님의 강의에 나온 설명 이미지를 사용했습니다
https://codingapple.com/course/git-and-github/

'Project > Git, Github' 카테고리의 다른 글

[Git].ch4.브랜치 전략  (0) 2026.01.22
[Git].ch3. GitHub 사용  (0) 2026.01.21
[Git].ch1.Git기초  (1) 2026.01.18