git flow / git pull로 인한 충돌 지옥 (feature finish)

flobeeee·2022년 4월 21일
0

시행착오

목록 보기
36/43

⚡️상황

기능개발을 완료하고 develop 에 반영하기 위해서
git flow feature finish [featrue 명] 명령어를 사용했다.
자동으로 develop로 merge 되고, feature 브랜치는 사라진다.
현재 위치도 develop 브랜치다.

node ace build 도 잘 통과하고
npm run test 도 잘 통과해서
이제 git push 만 하면 되는 상황이었다.

그런데 불현듯 뜨는 생각.
평소에도 협업할 때마다 git pull 을 했으니까.
지금도 git pull하면 이미 업데이트가 완료됐다고 뜰거라고 예상하고
확인차 git pull 을 쳤다.

그리고 conflict 지옥이 시작됐다.


⚡️전개

파일 한 두개가 conflict가 뜨길래 반영할 코드를 선택하고
git add [바뀐파일경로]
git commit -m "충돌제거"
git rebase --continue
명령어를 차례로 눌렀다.

그런데 또 다른 conflict가 떴고, 위 명령어를 계속 반복했다.
언젠가를 끝날 것이라고 생각하고 계속 했다.
특이한 건 내가 초반에 작성했던 코드들 먼저 충돌하고 그 후에 해당 코드와 내 최근 코드가 충돌했다.

그렇게 40분정도 경과했다 ..
결국 도움을 요청했고, 같은 경험을 한 사수가 해결방법을 알려줬다.


⚡️해결

git rebase --abort 명령어로 충돌 전으로 돌아갔다.
내가 여태 코드를 선택하고 다시 커밋을 쳤던 과정 전으로 돌아갔다. (시간여행처럼.. 없던일로 만들었다.)

그리고 다시
node ace build 도 잘 통과하고
npm run test 도 잘 통과해서
git push 를 했다.

소스를 확인하니 내가 최근까지 작업한 내용이 잘 들어가 있었다.
혹시 몰라서 develop 에서 내가 만든 기능을 테스트했다.
다행히 잘 돌아갔다.


⚡️참고 / rebase 진입 시 명령어

충돌 해결한 경우 : git rebase --continue
원래 분기를 확인하고 리베이스를 중지: git rebase --abort

사수가 알려준 명령어는 진행하던 리베이스를 중지하는 명령어였다.

충돌이 일어난 이유는 아마도 feature finish를 하면 로컬 develop과 merge가 되는데
git pull을 해서 리모트 develop을 가져와서 일어난 문제 같다.
다음에는 feature finish를 하면 바로 git push를 해야겠다. 👍


⚡️ git merge 했는데, 충돌안났음. 근데 취소하고싶음

git reset --hard ORIG_HEAD

머지(병합)하기 전의 HEAD로 돌아갑니다.

profile
기록하는 백엔드 개발자

0개의 댓글