Git & Github - [merge, conflict]

Sunghee Park·2022년 11월 9일
0

GIT & GITHUB

목록 보기
6/7

1. merge

  • 두 버전 합치기
  • 기능 버전에서 작업이 끝나서 두 버전 합치고 싶을때
  • 기능개발한 브랜치들을 모두 master에 합침
  • 기능브랜치인 oct브랜치가 compare 브랜치가 되고
    대상으로 merge할 브랜치가 base브랜치인 master branch임

[RULE]

  • 먼저 base가 될 브랜치로 이동
  • master로 이동(master에다가 oct를 합칠 거니까)
  • compare branch인 oct브랜치를 나와 합치고 싶다고 명령
    git merge oct

고양 4와 문어A를 합친 결과는 => 문어A 커밋이 됨
=> 문어 A커밋을 oct,master브랜치가 모두 가르키게 됨
=> 문어 A는 고양4에서 +alpha된 결과니까 둘이 합친 결과를 가르키게됨

  • GUI
    Boxiting-cat 저장소로 가서 feat/main-page 저장이 끝났으니 master와 병합
    -즉, feat/main-page에 있는 메인페이지 생성 commit을 내 master브랜치에 적용
    => 1. 베이스 브랜치인 master로 이동, 왼쪽 브랜치에서 더블클릭
    2. mainpage를 병합


  • origin/master는 아직 옛날 커밋에 있는데, 내 컴퓨터의 로컬 master가 feat/main이랑 동일한 메인페이지 생성 커밋으로 옮겨간걸 볼 수 있음
    원래는 feat/main에만 메인페이지가 있었는데 =>이제는 master에도 메인페이지 생성 커밋이 반영되게 됨

-병합한 결과를 원격 저장소에 적용하려면,
push 를 함

  • origin/master도 다 기능페이지에 오게 된 것을 확인할 수 있음

2. conflict


case1

case2

case3
만약에 이 과정에 충돌이 난다면

  • >>> === <<< 내용 지우고 수동으로 내가 판단해서 고침
    필요없는거 지우고 저장

  • 저장하면 새로운 commit이 생김

conflict 실습

1. Boxiting-Oct : 스파링 좋아요

  • vs code > Boxing oct 저장소 > 스파링 좋아요 추가
    vs code 내 commit 확인 가능

    vs code 고치기

    vs code에서 1. commit 2. push 하기
  1. change가 stage로 올라가게 됨

  2. 새로고침 버튼 클릭 : pull받을게 있으면 pull, push 받을게 있으면 push하게 됨


    =>push 가 됨
  • soure tree가서 패치로 새로고침함 - 스파링 좋아요 커밋이 생긴 것 확인 가능
  • 스파링 좋아요 commit을 master branch에 병합하기
    1. 브랜치>master>pull
    master 브랜치에 새로운 변경사함 pull받기
    기능 목록 추가를 기점으로 master branch와 comment 브랜치 상태가 나눠진 것 볼 수 있음

    2. 내가 지금 master에 있으니까 내가 merge를 원하는 대상인 feat/comment 선택 후 merge
    merge branch feat commit이 생기게 됨

    3. master 브랜치에 push
2. Boxiting-cat : 스파링 싫어요 [coflict나는 상황 만들기]
  • GUI Boxiting-cat > feat > main-page로 이동

  • vs code에서 feat-main-page에 raedme.md에 스파링 싫어요 추가

    -이번엔 source tree- 커밋, 푸쉬 해보기 (아까는 vscode에서 함)

  • history로 가면 잘 반영된거 확인 가능

  • master브랜치에 스파링 싫어요 merge하기
    - master에 boxiting-oct에서 만든 merge commit이 보이지 않음
    - master branch에서 먼저 패치로 새로고침


    로컬과 origin에 있는 마스터가 차이가 남

    master를 최신 상태로 유지하기 위해 pull을 받아옴

master branch가 merge branch feat/comment인 최신 커밋에 있고, 스파링 싫어요가 내 origin/feat/main-page에 있음
: 우리는 스파링 싫어요를 추가한거고 master branch는 스파링 좋아요가 추가되어 있는 상태
=> master랑 feat/main-page를 합치려고 하면 충돌이 남

  • 스파링 싫어요 누르고 merge해보기=>충돌 남

  • conflict가 난 파일은 자동으로 커밋하지 않은 변경 사항에 스테이지 아래에 있게 됨

  • vs code에 깃패널을 누르면 readme.md 파일이 나옴

  • 스파링 싫은데 좋아요로 고쳐보고 저장 누름

  • >>>===<<< 가 사라진 상태 => stage에 올린 다음에 커밋함


commit message가 자동으로 생김

reference

fastcampus- 처음 배우는 Git & GitHub - 진유림 강사

0개의 댓글