ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ Git & Github ] Rebase 사용을 인한 PR 에 중복된 커밋
    Git & Github 2022. 2. 27. 19:53

    1. 상황  [ rebase 하고 중복 커밋이 이력에 남음 ]

     

     

    Rebase 를 하고 PR 을 보내는 와중에 아래와 같이 중복된 커밋을 마주 하게 되었다.

     

    1.  branch step1 을 작업하고 upstream에 PR 을 보냈다.

    2.  PR 을 보내고 step1 에서 따낸 step2 , step3 , step4 에서 추가 작업을 진행했다.

    3.  step1의 작업이 upstream 에 머지되고 upstream을 fetch 하고 그 위에 rebase 를 했다.

     

    그리고 리베이스한 브랜치를 푸쉬하는순간!

    바로 풀 먼저 당기라는 문구를 접하게 되었다.

     

    "

    hint: Updates were rejected because the tip of your current branch is behind

    hint: its remote counterpart. Integrate the remote changes (e.g.

    hint: 'git pull ...') before pushing again.

    hint: See the 'Note about fast-forwards' in 'git push --help' for details.

    "

     

     

     

    2.  원인 파악

     

    문제는 여기서 pull 을 받은 것이다.

    rebase 를 로컬에서 먼저 진행했으니 원격과 달라지는 것은 당연한 결과였다.

    이미 해당 브랜치는 원격저장소에 푸쉬되 었고 로컬에서 리베이스를 통해 이력이 바뀌었다.

    pull 을 받으면 rebase로 인해 이사갔던 커밋들과 원격에 있던 커밋은 다르게 취급되어 중복 커밋이 발생하게 된 것이다.

     

    3. 해결 방법

     

    해결방법은 force push 입니다.

    처음에는 push -f 를 치는 것이 겁났지만 다음 같은 상황에서는 사용해야합니다.

     

    로컬에서 재배치한 작업을 원격 저장소에 force push 를 하는 것으로 예쁜 커밋 이력을 볼 수 있습니다. 

     

     

    아래는 그림은 rebase 상황을 해당 사이트에서 시뮬레이션 한 것입니다.

    git 이 익숙하지 않으시다면 해당 사이트가 도움이 될 것 같습니다.

    https://learngitbranching.js.org/?locale=ko 

     

    Learn Git Branching

    An interactive Git visualization tool to educate and challenge!

    learngitbranching.js.org

    'Git & Github' 카테고리의 다른 글

    [ Git & GitHub] Merge revert 후 재병합  (0) 2022.05.07

    댓글

Designed by Tistory.