DEV/Git

[Git 기초] 원격 리포지토리의 특정 브랜치를 현 브랜치와 병합하기

Bi3a 2023. 12. 5. 01:57

728x90

깃, 깃허브에 대해 알아봅시다.


 

1. 원격 리포지토리의 특정브랜치를 현재 로컬 브랜치와 병합하는 방법

1) 현재 로컬 브랜치의 수정 내용을 무시하고 원격 브랜치의 최근 커밋을 불러오는 법

#1 현재 로컬 브랜치로 이동
$ git checkout <로컬 브랜치>

#2 git pull -f로 강제 병합
$ git pull <원격 리포지토리> <원격 브랜치명> -f

#2 예시
$ git pull origin main -f

git pull = git fetch(해당 원격 리포지토리에서 불러오기) + git merge(변경 내용을 병합하기) 가 합쳐진 명령어이다.

그 과정에서 로컬 브랜치의 수정 내용이 있을 시 git pull은 충돌이 발생하지만,

--force (-f) 로 강제로 pull 함으로써 기존 브랜치에서 작업 하던 내용이 전부 날아가며, 현재 원격 브랜치의 최근 커밋과 그 내용을 기존 브랜치에 덮어씌운다.

 

2) 현재 로컬 브랜치와 원격 브랜치를 비교하여 충돌을 해결하는 방법

#1 현재 로컬 브랜치로 이동
$ git checkout <로컬 브랜치명>

#2 git fetch로 원격 브랜치의 변경 내용을 불러오기
$ git fetch <원격 리포지토리> <원격 브랜치명>

#3 git diff로 원격 브랜치와 변경 내용을 비교
$ git diff <로컬 브랜치명> <원격 리포지토리>/<원격 브랜치명>

#4 충돌이 발생한 파일을 수동으로 해결(깃허브를 참고해 통일, 혹은 수정 내용 삭제)
#5 충돌 해결 파일은 스테이징 영역에 추가
$ git add conflicted file

#6 커밋
$ git commit -m "Conflict Resolved ..."

#7 변경사항을 원격 리포지토리에 push
$ git push origin local_branch

같은 코드에서 충돌이 발생하면 굉장히 번거롭기 때문에 기본적으로 어떠한 코드 수정작업을 착수하기 전에 미리 최신 버전의 pull을 땡겨온 후에 작업하는 것이 좋다.

그렇지 않으면 백이면 백 충돌이 발생하기 때문에, 이후에 수정 사항을 일일히 맞추는 것이 굉장히 번거롭다.

 


틀린 부분이 있으면 댓글로 알려주세요!