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을 땡겨온 후에 작업하는 것이 좋다.
그렇지 않으면 백이면 백 충돌이 발생하기 때문에, 이후에 수정 사항을 일일히 맞추는 것이 굉장히 번거롭다.
'DEV > Git' 카테고리의 다른 글
[Github] 깃허브 일일 자동 잔디 심기(오토 커밋) 툴 소개 (0) | 2024.06.29 |
---|---|
[Git 기초] 로컬 브랜치를 생성할 때 주의사항 (0) | 2023.12.05 |
[Git 기초] 깃 특정 시점 커밋 열람하고 다시 돌아가는 명령어 (2) | 2023.11.20 |
[Github] 깃헙 플로우(Github-Flow) 의 이해와 절차 (0) | 2023.10.30 |
[Git 기초] Git Bash 기본 명령어 (3) | 2023.10.18 |