6/17 Git Merge and Conflict

Yoochang Sung·2024년 6월 22일

Git

목록 보기
10/13

Merge

이번 챕터 중요!!

개념

  • 서로 다른 두 버전을 병합하는 작업
  • head 위치 중요!
  • 문법 : git merge 브랜치이름
  • 현재 버전에 merge 다음에 준 타깃 버전을 병합!
  • Branch를 병합하거나
  • Push Pull 할 때도 일어난다
  • push 경우 리모트 레포지토리 쪽으로 로컬 레포지토리 버전이 병합
  • pull 경우 리모트 레포지토리 버전을 로컬 레포지토리로 병합

Main에서 dev를 병합

  • 브랜치를 내어서 작업(dev)을 하다가 작업 결과가 잘 나와서 merge를 하고 dev 브랜치를 종료할 때

dev에서 main을 병합

  • dev에서 작업을 하던 도중 메인에서 갱신되는 부분을 공유 받을 때(메인의 db가 업데이트 됐을 때)

conflict

  • merge하다가 발생하는 문제 상황. 직접 해결해야 한다.
  • 두 버전을 merge하는 상황에서 auto merge가 불가능한 상황에서 발생

conflict가 발생한 파일

  • conflict 메시지와 git status로 파악 가능
  • merge 과정에서 충돌 발생시 가운데 ======를 기준으로 충돌부분을 보여줌. 이를 기준으로 코드 수정

해결

첫 단계 -> 파일 수정 (conflict 난 부분이 다 수정되었는지 확인)

  • <<< Head, ===== 같은 특수 문자 다 없어졌는지 확인!

두 번째 -> git add conflict 파일 이름

세 번째 -> git commit -m merge_message

  • git commit까지 완료되면 conflict 상태가 해지되어 merge할 수 있다.
  • 참고: git commit이 실패하는 경우 git commit -i로 강제 commit할 수 있다.
  • merge도 완료된다

Git은 기다려주니 차근차근 해결하자

push pull 중 conflict가 발생하면

push 중 conflict 발생

  • push가 실패함

  • push 때 merge는 remote 서버에서 일어남(remote 서버에는 해결해줄 사람이 없음. auto merge만 가능. push를 받아주지 않음)

  • pull을 해서 conflict 에러 확인 가능

pull 동작 중 conflict 발생하면

  • fetch만 되고 merge가 실패한 conflict 상태가 됨
  • conflict 해결하면 merge commit이 완료됨



바로 push하지 말고 항상 pull 먼저 하는 습관 들이기

브랜치를 merge


profile
Yoochang Sung

0개의 댓글