사이드 프로젝트/CafeMate프로젝트(SpringBoot)

11주차 CafeMate 브랜치에서 실수로 다른 기능 구현을 했을때

EVO. 2023. 5. 12. 23:13

문제 인지

 

현재 저의 사항은 다음과 같습니다. 

 

 

보시다시피 feature-auth 브랜치에 다음과 같은 문제가 발생했습니다.

 

1. feature-auth는 인증 관련 기능을 수행하는 브랜치

2. 브랜치를 바꾸지 않은 상태로 상품등록폼 구현 및 리스트 구현 중에  브랜치 바뀌지 않은 상태였다는 것을 인지

3. 다행이 아직은 커밋을 하지 않은 상태

 


문제 해결

어떻게 하면 안전하게 상품등록폼 구현 및 리스트 구현중인 작업을 feature-product 브랜치에 옮길 수 있을까 고민을 해봤습니다.

저의 생각은 다음과 같습니다

먼저, develop브랜치로 switch

2번째, develop 브랜치에서 feature-branch를 생성(git checkout -b feature-branch): 위의 그림처럼 아직 생성 안 했습니다

 

그럼 그림은 이런 모습이 될 것이고 (처음에 그린 브랜치그림이 잘못된 거 같아 수정도 거쳤습니다)

이제 여기서 어떻게 할지 막혀 찾아봤습니다.

 


0. 일단 feature-auth브랜치에서 잘못한 작업을 커밋시킨다.

1. 작업한 feature-auth 브랜치에서 새로운 feature-product 생성한다.

2. feature-product 브랜치에는 상품등록, 리스트 구현 커밋이 들어 있다.

3. 다시 feature-auth 브랜치로 이동하고 commit 내역을 돌리는 명령어를 입력한다.(git reset --hard HEAD~1)

4. git log를 통해 삭제된 커밋 내역을 확인하고 feature-product 브랜치로 이동한다. 

 

이렇게 하면 될 거 같지만 또 다른 문제가 있습니다.

상품등록폼 구현 및 리스트 구현 중이라는 작업에 로그인 시큐리티 구현도 일부 들어있습니다..

한번 감히 예측을 해보면 위 절차를 진행하고 feature-auth를 develop에 push 하고 feature-product를 develop에 push 하게 된다면 문제가 생길 거 같지는 않을 거 같습니다.

하지만 단점은 feature-product를 develop에 push를 하지 않으면 feature-auth를 작업을 더 이상 진행할 수 없습니다.

만약 작업을 진행하면 같은 부분을 계속 건들고 하기 때문에 충돌이 일어날 가능성이 매우 높을 것 같습니다.

 

결론적으로 가장 안전한 방법으로 3,4번은 진행하지 않도록 하겠습니다. 

 

하지만 역시 하나의 커밋에 2개이상의 기능이 넣어져 있기에 나중에 에러가 발생했을 때 수정하기가 까다로울 것 입니다.


git에서 commit을 분리

아직 커밋을 진행하지 않았을 때 커밋을 분리하는 방법이 생각났습니다.

각각을 따로 따로 커밋을 시키고 아까 위의 1,2단계를 실시하면 아까 고민되었던 단점이 지워질것입니다.

 

 

 

 


결론

첫번쨰, commit 분리 완료

 

 


 

최종본

아까 한 깃플로우 그림에서 이제 진짜로 최종본을 완성했습니다

 

커밋을 분리한 만큼 이런 부분에서 자유로워 진듯 합니다.

이제 이 플로우 방식에 따라 마무리를 짓겠습니다.

 원하는 구현이 끝났습니다. 문제가 생기지 않았으면 좋겠습니다 이상