본문 바로가기
카테고리 없음

Github 으로 협업하기

by riversun1 2024. 6. 18.

 

저는 혼자서 주로 개발공부를 했어서

그냥 github에 프로젝트 올리는 것은 엄청 쉽지만

병합하고 브랜치를 이동하고 pull 받고 하는건 익숙치 않았습니다.

 

이번 기회에 블로그에 정리를 하려고 합니다.

 

 

Git에서 팀원이 올린 pull request를 merge하여 최신 코드로 업데이트된 dev 브랜치의 코드를

자신의 feature 브랜치에 합치는 절차는 다음과 같습니다.

이 과정에서 병합 충돌이 발생할 수도 있으며, 이 경우 직접 해결해야 합니다.

 

1. 로컬 저장소에 dev 브랜치의 최신 코드 가져오기: 먼저, 현재 작업 중인 브랜치에서 변경 사항이 있는지 확인하고 커밋을 저장합니다. 그런 다음 dev 브랜치로 전환하여 최신 코드를 가져옵니다.

# 현재 feature 브랜치에 있는 변경 사항을 커밋 (아직 커밋하지 않았다면)
git add .
git commit -m "Save progress"

# dev 브랜치로 전환
git checkout dev

# 원격 저장소에서 최신 코드 가져오기
git pull origin dev

 

 

2. feature 브랜치로 돌아가서 dev 브랜치를 병합하기: 최신 dev 브랜치를 feature 브랜치에 병합하여 최신 상태로 만듭니다.

# feature 브랜치로 전환
git checkout feature

# dev 브랜치 병합
git merge dev

 

 

3. 병합 충돌 해결 (필요 시): 병합 중 충돌이 발생하면, Git은 이를 알려주고 충돌 파일을 표시합니다. 충돌을 해결하고 커밋합니다.

# 충돌 파일 편집 후 변경 사항 추가
git add <conflicted-file>

# 병합 커밋 완료
git commit -m "Resolve merge conflicts"

 

 

4. 원격 feature 브랜치에 푸시하기: 병합이 완료되고 모든 충돌이 해결되면, 변경 사항을 원격 feature 브랜치에 푸시합니다.

# 원격 저장소에 feature 브랜치 푸시
git push origin feature

 

 

요약

  1. 로컬 dev 브랜치를 최신 상태로 업데이트 (git checkout dev, git pull origin dev).
  2. feature 브랜치로 전환 (git checkout feature).
  3. feature 브랜치에 dev 브랜치를 병합 (git merge dev).
  4. 충돌 해결 후 변경 사항 커밋.
  5. feature 브랜치를 원격 저장소에 푸시 (git push origin feature).

이 과정을 통해 최신 dev 브랜치의 코드를 feature 브랜치와 병합할 수 있습니다.

 

 

 

병합 중 충돌이 발생했을 때 해결하는 방법은 다음과 같습니다:

 

1. 충돌 파일 확인 및 수정: 충돌이 발생한 파일을 열어 충돌을 해결해야 합니다. 충돌이 발생한 파일은 Git이 다음과 같이 표시합니다

<<<<<<< HEAD
현재 feature 브랜치의 코드
=======
dev 브랜치의 코드
>>>>>>> dev

 

예를 들어, src/routes/Router.jsx 파일에서 충돌이 발생했다고 가정해 봅시다. 파일을 열고 충돌을 해결합니다:

 

<<<<<<< HEAD
// feature 브랜치의 코드
=======
// dev 브랜치의 코드
>>>>>>> dev

 

 

충돌을 해결한 후에는 이 표시들을 제거하고, 최종적으로 어떤 코드가 유지되어야 할지 결정합니다.

 

 

2. 충돌 해결 후 파일 단계에 추가: 충돌을 해결한 파일을 저장하고 Git stage에 추가합니다.

git add src/routes/Router.jsx

 

 

 

3. 병합 커밋 만들기: 모든 충돌을 해결하고 변경된 파일을 stage에 추가한 후, 병합을 완료하는 커밋을 만듭니다.

git commit -m "Resolve merge conflicts in Router.jsx"

 

 

4. 변경 사항 푸시: 병합이 완료되었으므로, 로컬 브랜치의 변경 사항을 원격 브랜치로 푸시합니다.

git push origin feature

 

 

정리된 단계:

  1. 충돌이 발생한 파일 열기 (src/routes/Router.jsx).
  2. 충돌 해결 후 저장.
  3. 파일을 Git stage에 추가 (git add src/routes/Router.jsx).
  4. 병합 커밋 생성 (git commit -m "Resolve merge conflicts in Router.jsx").
  5. 변경 사항을 원격 저장소에 푸시 (git push origin feature).

이 과정을 통해 병합 충돌을 해결하고 병합을 완료할 수 있습니다.