한 컴퓨터, 즉 master에서 npx create-react-app newproject
하여 CRA를 만든다. 이 과정에서 git init까지 함께 진행되는 것이다.
그 후, 해당 프로젝트에서 팀원들이 공통으로 사용할 모든 환경을 설치해준다.
(라우터, Sass, reset.css, common.css 등)
현재 로컬의 마스터에서 git init이 된 상태, 이제 remote에 repository를 생성하고 연결해준다.
git remote add origin https://github.com/minju1009/westagram.git
지금까지 한 사항을 commit해준다. git add . => git commit -m"Create new project"
CRA에는 node_modules은 .gitignore에 포함되어 있어서 올라가지 않는다. 노드모듈은 너무 용량이 커서 추후 package.json에 적혀 있는 환경을 npm install을 통해 개인이 세팅한다.
git clone [http://github.com/minju1009/repository_name](http://github.com/minju1009/repository_name)
git clone을 하면 git init과 remote연결이 한번에 된 것임을 기억!
//새로운 기능을 만들고 싶다. 그러면 일단 브랜치 생성해서 작업하기!!!
git branch feature/login 브랜치 기능에 따라서 이름 지어서 브랜치 만들기
git checkout feature/login // 만들어놓은 브랜치로 이동하기
git branch //현재 어떤 브랜치에서 작업하고 있는지 확인하기
//개발하기
git status // staging 확인
git add . // 추가
git commit -m "Add: Login page complete"
git log // commit 메세지 등 커밋사항 확인
git push origin feature/login // 원격 저장소 이름이 origin
// 내 로컬의 마스터 업데이트 해주기
git checkout master
git pull origin master // 원격저장소(origin)의 마스터 브랜치를 땡겨와라
🛑 minju와 younghee가 같은 프로젝트에서 작업 중이다. 둘다 똑같이 프로젝트를 다운받아 같은 파일(index.js)에 작업을 했고, younghee가 올린 게 먼저 master에 merge가 되었다. minju가 작업한 파일을 올리려는데 conflict가 발생한다.
minju에서 작업한 index.js파일에는 (즉 master에서 받아왔던 파일) younghee가 작업한 내용이 없다. 그래서 마스터가 대체 누구껄 최종으로 해야하는지 몰라서 minju에게 충돌이 발생했으니 어떤 걸 올려야 할지 알려달라고 하는 것이다.
minju의 master 브랜치를 younghee가 올린 최종 작업본으로 업데이트 해주고, minju 브랜치에 그 내용을 merge로 합쳐온다. 그러고 나면 내가 작업했던 내용과 새로 땡겨온 내용에 차이가 발생하는데, 그 내용을 직접 확인하고 최종 남길 코드만 남기고 다시 push해주면 해결된다.
이 과정을 CLI로 작성해 보자면 아래와 같다.
(git push origin feature/minju로 올렸는데 conflict발생!!)
git checkout master
git pull origin master
git log // younghee가 작업한 내용까지 반영되어 있다.
git checkout feature/minju
git merge master
// 화면에 auto failed 메세지가 나온다.
//VScode의 source탭에서 최종 반영되어야 할 내용 남겨줌
git branch // feature/minju브랜치에 있는지 확인
git add .
git commit -m"Fix: conflict fixed"
git push origin feature/minju
// 다시 github 확인하면 conflict메세지가 사라진 것을 볼 수 있다.
PR작성!!