ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • TIL.73 Github / Git 충돌(Conflict) 발생 해결
    TIL 2020. 12. 20. 23:29
    728x90

    Git에서 master(main)의 brach를 만들고 작업을 하다보면 pull request 시 Confilct(충돌)이 나는 경우가 있다.

    (또는 Github에서도 확인이 가능하다)

     

    Conflict 발생이유

    내가 pull origin main을 한 후 다른 작업자가 나와 같은 라인을 수정하고,

    수정한 내역을 main과 Merge할 경우 발생한다.

     

    이때 Git 충동을 해결하는 2가지 방법이 있다고 한다.

    1. Merge --> Merge로 해결을 하였다.

    2. Stash  --> '책갈피' 개념으로 생각, 지금의 코드를 만들어내긴 했는데 뭔가 오류가 생기게 됩니다.

    하지만 그렇다고 코드를 날려버리기엔 아까울 때, 백업 및 책갈피 개념으로서 이 명령어를 쓴다고 한다.


    Merge

    나의 로컬 master(main) 에서 Github 원격저장소의 main을 pull 받는다.

    git pull origin main

    그리고 나서 git checkout을 통해 충돌이 발생했던 branch로 이동하고

    이 branch를 최신버전의 로컨 main과 merge해준다.

    git checkout feature/productview

     

    git merge main
    

    이 과정을 거치면 pull request했을때 충돌이 났던 상황이 재연된다.

    다른 작업자가 수정해놓은 최신버전과 현재 내가 수정한 branch가 충동하고 있는 상황이다.

    이렇게 충돌된 파일이 확인되면 해당 파일을 수정하면 된다.

    (main) $ git checkout feature/productview             # 내 작업 브랜치로 이동
    Switched to branch 'feature/productview '
    
    (feature/productview ) $ git merge main               # 최신으로 업데이트 된 main 브랜치를 내 작업 브랜치와 merge
    Auto-merging README.md
    CONFLICT (content): Merge conflict in README.md          # 충돌된 파일 이름은 README.md
    Automatic merge failed; fix conflicts and then commit the result.

    충돌이 일어나면 아래와 같은 예시로 확인할 수 있다.

    출처 : Github : Git pull 후, 충돌(Conflict) 발생 시 (tistory.com)

     

    Github : Git pull 후, 충돌(Conflict) 발생 시

    해당 글은 https://blog.naver.com/kbs4674/221174678439 로 부터 게시글이 이전되었습니다. Git pull을 하는데 갑자기 Conflict 에러가 발생했습니다!  이럴 때는 의외로 간단한 해결방법이 있는데 바로 코드..

    kbs4674.tistory.com

     

     

    HEAD는 되기 전, 내가 가지고 있던 코드로서 과거본이라고 보면 되고,

    origin/main은  git pull  후, 새로 반영된 코드로서 최신본이라고 보면 된다.

    둘 중에 어느 코드를 사용할지 고른 후, 안 쓸 코드에 대해서는 지우면 된다.


    해결 후 add / commit / push로 해결하면 된다

    add .
    commit -m "dsds"
    git push #origin main

    Stash 

    stash 라는 해결방법 또한 존재합니다.

    stash는 '책갈피' 개념으로 생각하면 되는 개념으로서, 지금의 코드를 만들어내긴 했는데 뭔가 오류가 생기게 된다.

    하지만 그렇다고 코드를 날려버리기엔 아까울 때, 백업 및 책갈피 개념으로서 이 명령어를 사용하자

     참고  이 명령어를 쓰게되면 HEAD상태(commit 최신본)으로 되돌아가게 됩니다.

    git stash

     단순히 위 명령어만 치면은 과거 코드본 상태인 HEAD 상태로 되돌아가게 되는것이 확인된다!

     

    stash에 저장했던 과거의 코드를 열람 및 가져오고 싶을때

    1) 열람

    git stash list

     

    2) stash 당시 작업내역에 대해 백업해뒀던 코드 가져오기

    git stash pop

    pop은 stash 리스트 중 마지막 stash만 가져옵니다!

     

    자료 참고 및 출처

    Github : Git pull 후, 충돌(Conflict) 발생 시 (tistory.com)

    728x90

    'TIL' 카테고리의 다른 글

    TIL.76 AWS  (0) 2020.12.23
    TIL.75 RSETfulAPI  (0) 2020.12.22
    TIL.72 select_related 와 prefetch_related  (1) 2020.12.19
    TIL.71 JsonResponse 활용  (0) 2020.12.18
    TIL.67 Trello 다루기  (0) 2020.12.14
Designed by Tistory.