# 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 는 작업 중인 변경(스테이징/언스테이징/새 파일 포함) 을 그대로 가져와 브랜치만 바꾼다
# 잘못 커밋된 상태에서
git branch feature/my-work # 현재 HEAD를 가리키는 브랜치 생성
git switch main
git reset --hard HEAD~N # N개의 커밋을 main에서 제거
git switch feature/my-work # 새 브랜치에는 커밋들이 그대로 남아있음
# 작업을 담을 새 브랜치
git switch -c feature/my-work
git cherry-pick <해시1> <해시2> ...
# main에서 되돌리기(히스토리 보존형)
git switch main
git revert <해시1> <해시2> ...
git push
# 기능 브랜치에 main의 최신 내용 반영
git switch feat-x
git rebase main # 깔끔한 선형 이력 (권장)
git switch main
git pull --ff-only
git merge --ff-only feature/my-work # 병합 커밋 없이 포인터만 전진
git push
git switch main
git pull --ff-only
git merge --no-ff feature/my-work
git push
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(자동으로 됨)