여러명이서 공동 프로젝트를 하는 상황에서 종종 git conflict상황을 마주하고는 한다.
정확히 어떤 상황에서 마주하는지, 그리고 이를 어떻게 해결해야하는지 알아보자!
한 사람(master 담당)이 npx create-react-app (project 이름)
을 통해 CRA를 생성한다.
해당 프로젝트 팀원들이 공통으로 이용할 파일들을 생성해주는 등 파일 초기세팅을 진행한다. ex) router, sass, reset.css
git add .
👉 git commit -m “Add : initial settings complete”
git remote add origin (repository 주소)
현재 로컬의 마스터에서 git init이 된 상태, 이제 remote에 repository를 생성하고 연결해준다.
git clone (project 주소)
🔖git clone : git init과 동시에 remote 연결 한번에 된다!
새로운 기능을 팀원들 각자 분담하여 만들고자 할 때 branch를 생성하여 작업한다.
git branch feature/login
브랜치 기능에 따라서 이름 지어서 브랜치 만들기
git checkout feature/login
만들어놓은 브랜치로 이동하기
git branch
현재 브랜치 위치 확인하기
git status
staging 확인
git add .
추가 (commit 해주기 전에 확인한다)
git commit -m "Add: Login page complete"
commit하기
git log
commit 메세지 등 commit한 기록 확인
git push origin feature/login
내 로컬의 마스터 업데이트 해주기
🔖origin : 원격 저장소의 이름
👉 push 한 이후 PR 작성 해주기
<내 local branch update 할 때>
git checkout master
local master로 간다.
git pull origin master
remote master branch를 땡겨온다.
만약 다른 사람이 같은 프로젝트 내에 같은 파일에서 작업을 한 후 master에 merge를 한다고 가정하면, 필연적으로 conflict가 발생한다.
A와 B가 한 파일을 각자의 local branch에서 작업했다고 가정해보자. A가 작업한 파일에는 B가 작업한 내용이 없다. master에서는 최종으로 어떤 파일을 선택해야할지 몰라서 conflict가 발생했으니 어떤 파일을 올려야할지 알려달라고 하는 것이다.
Git checkout master
local master branch로 간다.
Git pull origin master
remote master branch 땡겨온다.
git checkout feature/hyojeong
conflict 재연 -> merge 해줘야함
master는 건들이면 안되므로 branch로 가주기
Git merge master
local master 내용을 local branch에 가져온다.
Vs 코드 왼쪽 가지치기 icon click! -> 해당 파일 들어가기 -> 불필요한 mark, 내용들 지워주고 저장하고 싶은 최종형태로 저장하면 됌!! (아주 간단!)
만약 잘못 지운 경우 - ctrl + z 눌러서 뒤로가면 됌
git commit -m "Fix: git conflict"
커밋해주기
Git push origin feature/hyojeong
수정 사항 push 해주기
Complict 해결 끝~!
실전에서 맞닥뜨리는 conflict 마주하더라도 침착하게 잘 해결해보자! 오류메세지 공포증 극복하자(?) 오류가 왜 일어나는지 이해만 하고 있어도 차근차근 잘 해결해볼 수 있다. 프로젝트 중 오류 상황에 마주하는 것은 너무 당연한 것이니! 문제 상황들을 맞닥뜨렸을 때 유연하게 처리해나가는 과정을 익히면서 점점 성장하게 될 것이라 생각한다. 에러 메세지 오히려 좋아~~~ (?) (거짓말)