git rebase & conflict 충돌 해결

bin·2023년 2월 23일

git rebase
브랜치 만들었던 것처럼 기반을 바꿉니다(말 그대로 베이스)

새로운 작업을 모두 마치고 push하기 전에는
1.main branch로 이동하여 remote main을 pull받습니다
2. 내가 push git feature branch 로 이동합니다
3. 'git rebase -i main'를 진행합니다.

rebase 하는 동안 squash 진행할 때에는
1. 가장 오래된 commit을 pick합니다
2. 다른 커밋 메세지는 가장 오래된 commit을 기준으로 squash합니다.
3. 다른 커밋의 작업 내역이 없어지는 것이 아닙니다.
4. Esc => :wq로 창에서 빠져나옵니다.

rebase 후 push 하기

  1. rebase는 commit gistory를 정리하는 역할을 합다.
  2. 같은 브랜치에서 rebase를 할 때마다 history가 달라질 수 있습니다.
  3. 수정 사항이 추가로 생긴 후 다시 rebase하면 history가 무조건 달라집니다.
  4. git은 history가 다른 걸 확인합니다.

conflict 충돌 해결하기

conflict은 commit과 commit 사이에서 일어나는 작업 내용 사이의 충돌이므로 세개의 커밋이 한 번에 충돌 날 가능성이 있습니다.

  1. 충돌이 일어난 경우 rebase가 진행되지도, 끝나지도 않고 도중에 멈춰 있는데
  2. 터미널이 같은 메세지로 rebase가 진행중임을 알려주니 걱정하시지 않으셔도 됩니다!
  3. 충돌은 충돌일 뿐, 해당하는 코드를 수정 후
  4. git add .(여기서 git commit은 하지 않습니다. 수정 사항이 없으니까)
  5. git rebase --continue를 진행합니다
  6. 멈춰 있던 rebase가 진행됩니다.
  7. 충돌이 여러번 나면 그때마다 충돌을 해결하고
    git add . / gut rebase --continue를 반복합니다.
  8. 계속 해결이 안된다면, git rebase --abort로 아예 rebase를 진행하기 전 상황으로 돌아갈 수도 있습니다.
profile
프론트엔드부터 공부하고 있습니다

0개의 댓글