-
[Git 입문편] 8. rebaseGit 2021. 3. 8. 23:23728x90반응형
본 포스팅은 저의 인터넷 강의인 실무자가 알려주는 Git - 입문편의 강의안을 바탕으로 작성하였습니다.
rebase
3.6 Git 브랜치 - Rebase 하기)
1. 다른 브랜치와 병합 (- 기능은 merge와 같음 (코드를 합침)
- 내 브랜치의 커밋을 대상 브랜치의 위(다음)으로 생성함
- 깔끔한 로그를 유지할 수 있음
- 실습
- 상황: master의 변경들을 feature/c에서 rebase 해본다
- 대상 브랜치의 커밋만 진행 (fast-forward)
- 두 브랜치 모두 커밋이 있지만 충돌이 나지 않음 (auto merging)
- 두 브랜치 모두 커밋이 있고 충돌이 남 (conflict)
- 상황: master의 변경들을 feature/c에서 rebase 해본다
2. 커밋 여러개 수정하기
- 주의
- push해서 누군가 사용하고 있는 커밋을 rebase 하면 안됨 (헬게이트가 열림)
- 해당 커밋을 기반으로 작업을 했을 텐데 그 기반을 바꿔 버리는 것
- push를 했더라도 아직 merge되지 않았고 다른 사람이 사용하지 않는 브랜치라면 (보통 feature 브랜치) 마음대로 rebase를 해도 무방
- -i: 대화형 모드
- 가장 위에 있는 커밋이 오래된 것 (git st와 반대)
- 옵션
- --abort : rebase를 중단. 원래 상태로 돌아감
- --continue : rebase를 계속 진행. 다음 단계로 넘어감
- --skip : 대상 브랜치의 내용으로 적용
- 커밋 목록에서의 옵션
- p, pick = use commit
- r, reword = use commit, but edit the commit message
- e, edit = use commit, but stop for amending
- s, squash = use commit, but meld into previous commit
- f, fixup = like "squash", but discard this commit's log message
- x, exec = run command (the rest of the line) using shell
- 실습
- 상황: 커밋 하나를 한 뒤, 오타가 있어서 추가 커밋을 함. 그리고 추가 작업까지 한 상태
반응형'Git' 카테고리의 다른 글
[Git 입문편] 10. cherry-pick, tag (0) 2021.03.08 [Git 입문편] 9. reset (0) 2021.03.08 [Git 입문편] 7. stash, merge (0) 2021.03.08 [Git 입문편] 6. push, pull & fetch (0) 2021.03.07 [Git 입문편] 5. branch, checkout (0) 2021.03.07