git 작업 파일 다른 branch 옮기기

merci·2025년 10월 27일

main작업 커밋x → 새 브랜치로 옮기기

# main에서 변경 중인 상태
git switch -c feature/my-work   # 또는: git checkout -b feature/my-work
# <- 워킹트리/스테이징 변경이 그대로 새 브랜치로 따라온다

# 이제 여기서 계속 작업/커밋
git add -A
git commit -m "작업 내용 커밋"
git push -u origin feature/my-work   # (옵션)

git switch -c 는 작업 중인 변경(스테이징/언스테이징/새 파일 포함) 을 그대로 가져와 브랜치만 바꾼다

main에 잘못 커밋

# 잘못 커밋된 상태에서
git branch feature/my-work       # 현재 HEAD를 가리키는 브랜치 생성
git switch main
git reset --hard HEAD~N          # N개의 커밋을 main에서 제거
git switch feature/my-work       # 새 브랜치에는 커밋들이 그대로 남아있음

main에 잘못 커밋 + push

# 작업을 담을 새 브랜치
git switch -c feature/my-work
git cherry-pick <해시1> <해시2> ...

# main에서 되돌리기(히스토리 보존형)
git switch main
git revert <해시1> <해시2> ...
git push

main을 새 브랜치로 가져오기

# 기능 브랜치에 main의 최신 내용 반영
git switch feat-x
git rebase main     # 깔끔한 선형 이력 (권장)

기능 → main (Fast Foward Merge)

git switch main
git pull --ff-only
git merge --ff-only feature/my-work   # 병합 커밋 없이 포인터만 전진
git push

기능단위로 → main

git switch main
git pull --ff-only
git merge --no-ff feature/my-work
git push

Squash

git switch main
git pull --ff-only
git merge --squash feature/my-work
git commit -m "feat: ~ 기능 추가"
git push

작업내용(미커밋 변경)을 들고 브랜치 이동

# A) 지금 변경을 임시 보관 (미추적 파일까지)
git stash -u -m "temp-move"

# B) 돌아가려는 브랜치로 전환
git switch feature/adm_department

# C) 방금 보관한 변경 복원
git stash pop   # 충돌 나면 해당 파일만 해결하고 add → git stash drop(자동으로 됨)
profile
작은것부터

0개의 댓글