Git! 새로운 프로젝트 생성하기 & 충돌해결방법

Minju Kim·2022년 3월 16일
0

CS & Etc.

목록 보기
6/9
post-thumbnail

👩‍👩‍👧 새로운 공동 프로젝트 환경 만들기 - 한 사람이 진행

1. CRA 생성

한 컴퓨터, 즉 master에서 npx create-react-app newproject 하여 CRA를 만든다. 이 과정에서 git init까지 함께 진행되는 것이다.
그 후, 해당 프로젝트에서 팀원들이 공통으로 사용할 모든 환경을 설치해준다.
(라우터, Sass, reset.css, common.css 등)

2. repository 연결

현재 로컬의 마스터에서 git init이 된 상태, 이제 remote에 repository를 생성하고 연결해준다.
git remote add origin https://github.com/minju1009/westagram.git

3. 초기세팅사항 커밋

지금까지 한 사항을 commit해준다. git add . => git commit -m"Create new project"CRA에는 node_modules은 .gitignore에 포함되어 있어서 올라가지 않는다. 노드모듈은 너무 용량이 커서 추후 package.json에 적혀 있는 환경을 npm install을 통해 개인이 세팅한다.

👶 생성되어 있는 프로젝트 다운받아오기

1. Git Clone

git clone [http://github.com/minju1009/repository_name](http://github.com/minju1009/repository_name)

git clone을 하면 git init과 remote연결이 한번에 된 것임을 기억!

2. branch 생성하여 작업 후 push → PR생성

//새로운 기능을 만들고 싶다. 그러면 일단 브랜치 생성해서 작업하기!!!
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)의 마스터 브랜치를 땡겨와라

프로젝트 진행 중 필연적으로 마주할 CONFLICT 해결하기

🛑  minju와 younghee가 같은 프로젝트에서 작업 중이다. 둘다 똑같이 프로젝트를 다운받아 같은 파일(index.js)에 작업을 했고, younghee가 올린 게 먼저 master에 merge가 되었다. minju가 작업한 파일을 올리려는데 conflict가 발생한다.

🤔  왜 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작성!!
profile
⚓ A smooth sea never made a skillful mariner

0개의 댓글