ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git merge
    GIT 2022. 1. 5. 17:13

    git merge

    머지는 각 분기된 커밋을 하나의 커밋으로 다시 합치고 싶을때 사용하는 명령어

    merge를 하기 위해선 기본이되는 커밋을 선택해 해당 커밋으로 체크아웃 -> git merge 합병원하는 브랜치 이름

    - 3way merge
    서로 다른 브랜치의 커밋을 머지할 경우 발생 충돌에 대해서 깃은 3way merge라는 방법을 통해 충돌을 해결한다. 이를 조금 더 자세히 살펴보면

    1. 3way merge는 base의 내용을 참고한다. (base에서 해당 파일이 어떤 내용을 담고 있었는지를 파악한다.)

    2. 한 브랜치의 파일만 바뀐 경우 바뀐 쪽으로 변경이 된다. (바뀐 쪽이 더 진보된것이므로..?)

    3. 두개 다 바뀌지 않았을 때는 base의 내용을 그대로 따른다.

    2. 이름이 같은 두 파일의 내용이 서로 다르게 바뀌었을 때는 사용자가 직접 수정을 해야 한다.
    - fast-forward merge
    패스트 포워드란 뿌리가 되는 브랜치에 변화가
    주어지지 않은 채 다른 변화가 생긴 브랜치로
    머지를 하게 되는 것 그러면 새로운 커밋이 생성되지 않고
    머지를 한 대상 브랜치의 마지막 커밋에 뿌리가 되는
    브랜치가 자리잡게 된다.

    그림참조> 지옥에서 온 관리자 Git 13강 - Git branch 기본개념 - YouTube

    fast forward

    login.txt, buysomething.txt 생성

    git branch : branch 목록을 보여준다

    git branch [branch name] : branch name 생성

    실제 git log 를 해보면 각 branch 의 head를 보여준다.

    git checkout [branch name] : branch name 으로 branch 변경 -> 변경된 branch 에서 checkLog.txt 생성

    master 와 topic 의 head가 다른걸 확인 할 수 있다. master 에서 checkLog 파일은 없다.

    git checkout master 머지하고싶은 branch로 이동

    git merge [branch name]을 하여 원하는 branch를 합치면 된다.

    3way merge

    join.txt, login.txt 를 master로 만든후 commit → git checkpoint -b [branch name] : 새로운 브랜치 생성후 checkout

    new branch 에서 idLogCheck.txt 생성후 commit

     

    git checkout master → touch write.txt → git add & commit 후 로그

     

    그림을 그리면 왼쪽 그림처럼 나온다 → merge를 하면 오른쪽 그림처럼 되는데 이때 3way merge가 된다.


    branch master 에두고 merge 를 하면 conflict 가 나지 않는다는 전제하에 합쳐진다.

    머지된 시점을 head가 표시하며 merge 된 topic 부분을 시간에 맞춰 정렬이 된다.

     

    'GIT' 카테고리의 다른 글

    Git의 간단한 기능들  (0) 2022.01.18
    Github push, pull, clone  (0) 2022.01.13
    merge conflict  (0) 2022.01.06
    Git Reset & Reflog  (0) 2022.01.04

    댓글

Designed by Tistory.