[GIT] master Merging 충돌 해결 방법

sg-moomin·2021년 12월 18일
3

오류해결

목록 보기
1/1

Git master|Merging 충돌 해결 방법


1. master|merging 생기는 요인

  • 현재 진행하고 있는 프로젝트에서 기존에 있는 파일명과 동일한 파일을 레파지토리(원격 저장소)에 올릴려고 하다가 충돌이 난 상황이다.
  • 충돌이 난 경우에 파일 내에서 merge를 하는 방법도 있으나 현재의 경우는 기존에 동일한 파일명이 존재하는데 파일명이 같은 파일을 Push하여 Merge를 하라고 메세지를 알려준다.
  • 현재 상황이 되면 master 옆에 Merging이라고 나오며 현재 병합중 상태임으로 다른 브런치로 넘어갈 수 없다.

2. 시도한 방법

  • 위의 그림처럼 우선 같은 명을 가진 파일이 충돌난 상황이면 merge를 먼저하는 것이 맞다.
  • 그리고 아마도 레파지토리(원격 저장소)의 커밋과 로컬의 커밋이 변경되어서 push를 허용하지 않았던것 같다.
  1. 파일을 직접 변경해주는 방법

    • 우선 "git diff" 명령어를 이용하여 레파지토리(원격 저장소)와 로컬의 차이를 비교한다.
    • 비교한 뒤 해당 충돌난 부분을 수정해서 다시 커밋해주면 문제를 해결할 수 있다.
  2. overwrite update

    • 위의 방식처럼 수정하는 것도 있으나 overwrite update 방법을 진행해봤다.

3. overwrite update?!

  • overwrite update는 기존 레파지토리(원격 저장소)에 있는 내용을 내 로컬에 업데이트 한다는 의미이다.
  • 즉 레파지토리(원격 저장소)에 존재하는 내용과 현재 내 로컬의 내용에서 충돌났을 때 해결할 수 있는 방법 중 하나이다.

4. git 로컬 파일 업데이트 하기

  • 가장 먼저 레파지토리(원격 저장소)에 있는 최신 commit 이력을 가져와야 한다.(최신 파일들로 로컬을 업데이트 할 것이기 때문이다.)

  • 그후 레파지토리(원격 저장소)에 있는 파일들을 가져오는 방법으로 진행하면 overwrite update의 과정을 밟을 수 있다.

  1. git fetch

    • 로컬의 master와 레파지토리(원격 저장소)의 master의 최신 이력을 확인할 수 있고 최신 커밋 이력을 로컬로 가져옵니다.
  2. git reset --hard origin/master

    • 현재 HEAD가 가리키는 브랜치를 옮기고 현재 로컬의 디렉토리 상태를 변경해줍니다.
  • 위의 단계를 진행하고 나면 merging 표기가 사라지게 된다.
  • 즉 overwrite update가 완료되었고 현재 충돌은 해결된 상태이다.
  • 마지막으로 충돌났던 동일한 파일명을 변경하 pull과 merge를 이용해서 레파지토리(원격 저장소)와 로컬 master를 통합시켜주면 내가 올릴려는 파일을 문제없이 레파지토리(원격 저장소)(원격 저장소)에 올릴 수 있다.
profile
backend 개발자를 꿈꾸는 직장인입니다.

0개의 댓글