Will find a way

브랜치와 커밋 분리 (git branch 실수) 본문

Git

브랜치와 커밋 분리 (git branch 실수)

Jaka_Park 2025. 4. 12. 13:02

 

상황설명

원래 작업할 방식은 merge가 된 dev 브랜치에서 화면별로 브랜치를 나눠서 작업을 할 예정이였다.

원래 의도하려던 브랜치 현재 잘못된 브랜치
dev (브랜치)
ㄴ C3300S
ㄴ C4100S
dev (브랜치)
ㄴ C3300S 브랜치에 C4100S 작업하여 문제 발생

 

 

브랜치를 하나를 더 생성해서 작업해야하지만 위에 표의 예시처럼 전에 작업하던 브랜치 그대로 커밋을 하게 됐다.

여기에서 기존 커밋과 브랜치를 새로 분리시키는 방법을 찾아보고 실행을 하여서 위의 깃에서 아래에 있는 깃으로 변경된 상태다. 

 

해당 방법에 대해서 간단하게 알아보자.

 

목표

- C3300S에 들어간 C4100S 관한 커밋을 분리

- 새로운 브랜치에 C4100S로 옮긴 다음

- C3300S는 원래 목적에 맞게 정리된 상태로 유지

 

1. C4100S 브랜체 새로 만들기 (현재 HEAD 기준)

git checkout -b C4100S

 

2. 커밋 확인해서 분리할 커밋 확인

git log --oneline

 

예를 들어 이렇게 나오면:

a1b2c3d [feat] C4100S 약관 페이지
f6g7h8i [feat] C3300S 비밀번호 재설정
...

 

C4100S 작업만 포함된 커밋이 맨 위라면 쉽게 분리가 가능하다.

 

3. C3300S 브랜치로 다시 돌아가서 최근 C4100S 커밋 제거

git checkout C3300S
git reset --hard HEAD~1 # C4100S 커밋이 1개일 경우

작업 내용은 사라지지 않는다. 방금 생성된 C4100S 브랜치에 있음

 

4. C3300S 브랜치 강제 푸시 (이미 push 했으니까 강제로 해야함)

git push origin C3300S --force

 

5. C4100S 브랜치에서 푸시

git checkout C4100S
git push origin C4100S

 

마무리 (분리가 완료됨)

C3300S : 비밀번호 재설정 작업만 포함
C4100S : 약관 관련 작업만 포함됨

 

오늘 알아본 것은 커밋이 1개일때만 사용하는 방법이다. 만약 C4100S 관련 커밋이 2개 이상이라면 rebase -i 명령어로 분리해야한다고 한다. 그 방법은 나중에 이슈가 터지거나 아니면 따로 다룰 예정이다.

'Git' 카테고리의 다른 글

cherry-pick : 특정 커밋을 골라서 따오고 싶어!  (0) 2025.05.07
Git Hub 으로 협업하기  (0) 2025.04.30
[Git] git 브랜치  (0) 2024.05.09
[Git] Git 명령어  (0) 2024.05.08