[git] rebase, squash, edit

markyang92·2021년 6월 13일
0

git

목록 보기
10/14

rebase

squash

  • 두 개의 커밋을 하나로 합치고 싶다.
(HEAD->[master]) $ git rebase -i HEAD~2

  • 역순으로 쭉 뜨는데, 제일 위는 그대로 pick으로 두고
    나머지는 전부 s(squash) 로 둔다.
    저장 후 나오자.

# commit message 1st:
patch1

# commit message 2st:
patch2
  • 그러면, 이젠 다시 1st ~ 's' 한 커밋 까지 뜨는데, 적절히 원하는 커밋 메시지를 넣고 나오자.
patch(1+2)

  • 만약 위 과정 중, 충돌(conflict)가 난다면 수정.. 수정 후
$ git rebase --continue

  • rebase squash가 완료되면 적절히 커밋이 합쳐져 있다.

    물론 local repo에만 반영 된 것이고, remote repopush 하려면 force push가 필요하다.
$ git push -f <remote> <branch>

edit

  • rebase edit은 한 번에 여러 커밋을 '수정'하려는 것이다.
    • 현재 지금의 커밋을 수정 하는 것은 $ git commit --amend로 되지만, 과거 커밋까지 한번에 하나씩 수정하기는 rebase edit을 사용하자.
$ git rebase -i HEAD~3  # 현재 HEAD 포함 3개
e <commit 1>
e <commit 2>
e <commit 3>

  • 하나 씩 수정 후
$ git rebase --continue

$ pull --rebase

  • 현재 local/master 브랜치를 수정 중 인데, <origin/master>가 이미 다른 사람이 여러 개 push 해둔 상태면, local/master<origin/master>를 다시 rebase 하고 싶다.
  • 이 경우 병합<origin/master>rebase 해주는 명령어가 아래와 같다.
(local/master) $ git pull --rebase
profile
pllpokko@alumni.kaist.ac.kr

0개의 댓글