1차 프로젝트 내내 삽질하며 간신히 익숙해져 가는 컨플릭트 해결 과정이다. 앞으로 이 글을 참고하지 않고 브랜치를 오가면서 눈 깜짝할 사이에 깃 컨플릭트를 해결하는 때가 오길 바라며..
리모트 feature/branch를 리모트 master에 병합시켜주고 싶은데, 리모트 master와 리모트 feature/branch의 내용이 달라서 머지가 안 되는 경우가 종종 생긴다. 그 경우 conflict가 일어났다고 한다. 컨플릭트란 명칭만 보면 뭔가 상황이 잘못된 것 같다고 느껴지는데, 그냥 로컬과 리모트의 코드를 합치기 위해선 확인할 코드가 있다는 신호 정도로 받아들이면 된다.
리모트 master랑 로컬 feature/branch 가 연결되어 있지도 않은데 로컬 feature/branch 브랜치에서 리모트 feature/branch로 백날 push 해봤자 계속 컨플릭트 나고 리모트 master에 merge할 수가 없다. 안전하게 로컬 master에서 리모트 master의 것을 가져와서, 그것을 feature/branch로 가져와서 컨플릭트를 해결하는 것이다. (삼각관계라고 보면 됨)
git pull origin master
git checkout feature/branch
작업한 것이 날아가는 게 아니라, 변경사항이 있으면 변경사항 옵션이 있다고 보여주는 것 뿐이므로 머지한다고 겁먹지 않아도 된다.
git merge master
vscode의 왼쪽 돋보기 클릭 후 ‘====‘를 검색하면 컨플릭트 난 파일들을 한눈에 볼 수 있다.
git add . => git commit -m “Fix: 컨플릭트해결” => git push origin feature/branch
작업을 했으면 안 됐지만 만약 작업을 했었다면 다른 브랜치를 파서 옮겨 놓던지.. (필요에 따라 로컬에서 컨씨컨브로 복붙.. 해 놓던지..ㅎ..야매방법.. 비추) 모두 불필요한 내용임을 확인했다면 로컬 master 브랜치를 리셋한다. 다음은 로컬 master 브랜치를 리셋하는 과정이다.
git stash
git log
아마 초기세팅한 상태를 고르면 될 것이다. 찾아서 리셋하면 끝.
git reset --hard 112344345872934052798789907890asdfasdf
git pull origin master
등등 2번의 과정.
master 브랜치는 신성하다. 작업을 하지 말자.
👍