Git Rebase
rebase는 Local 작업물과 Base 브랜치(보통 main 또는 master)를 비교해서 변경된 부분을 자동 병합 또는 수동 병합 할 수 있게 해주는 기능
(이해하기 쉽게 master로 설명)
merge와의 차이점
- merge : 두 브랜치를 병합하여 하나의 브랜치로 만드는 과정
- rebase : 현재 브랜치의 변경 사항을 다른 베이스(commit history)로 이동시키는 것
rebase 과정
rebase는 말 그대로 베이스를 옮기는 행위
쉽게 말해, 내 커밋 히스토리를 master 브랜치의 최신 커밋 뒤에 붙이는 것
1.Master 브랜치에는 여러 커밋 내역이 저장되어 있는 상태. 가장 최근의 커밋(base)을 바탕으로 새 브랜치를 하나 만든다
2.Master 브랜치에도 작업 내역이 쌓이고, 새롭게 생성한 브랜치에도 작업 내역이 쌓인다
이때 rebase를 실행하면, Master 브랜치와 New 브랜치의 commit들을 비교한다
※주의 : Local에 있는 master 브랜치 역시 pull을 통해 최신화 해줘야 한다!!!!
3.Master 브랜치와 New 브랜치의 커밋들을 비교하여 변경된 부분을 찾는다
4.만약 변경된 사항이 있다면 수동으로 충돌 수정 후 commit 해 주고, 변경 사항이 없는 부분은 자동으로 병합된다
5.자동 병합 및 충돌 수정이 완료된다면, master의 최근 head가 다시 base commit으로 바뀌고, 그 뒤로 new 브랜치에서 생성한 커밋들이 적용된다
여기서 master 브랜치에 merge를 하게 된다면, master 브랜치는 new 브랜치와 같은 모습이 되는 것이다
위 그림처럼 master의 최신 commit 위에 내 commit이 들어가 있다면 rebase를 성공적으로 실행한 것
Rebase 명령어
git rebase master
//마스터 브랜치를 rebase함
//마스터 브랜치의 최신 커밋을 받아옴
git rebase --abort
//리베이스 이전의 상태로 되돌림
git rebase --continue
//충돌 수정 후 rebase를 마저 진행 할 때
git rebase --skip
//rebase를 강제로 skip함
//주로 수정한 파일이 이미 커밋한 파일과 동일할 때 사용
Git Cherry-Pick
cherry-pick은 다른 브랜치의 commit을 적용하고 싶을 때 사용하는 명령어
→ 브랜치 간에 필요한 특정 변경 사항을 선택적으로 가져오고자 할 때 유용
사용 방법
// 특정 커밋을 현재 브랜치에 적용
git cherry-pick <commit-hash>
//ex) fit cherry-pick e0s19k29z => 해당 커밋 내용을 현재 브랜치에 적용
// 여러 개의 커밋 해시를 나열하여 적용
git cherry-pick <commit1> <commit2> <commit3>
// 커밋 범위를 지정하여 적용
git cherry-pick <commit1>..<commit4>
작동 원리
- cherry-pick을 실행하면 해당 커밋의 내용을 그대로 불러오므로, local 파일과 다른 부분이 있다면 충돌이 발생 할 수 있음
- 충돌이 발생한 경우 파일을 편집하여 충돌 해결 후 add를 통해 스테이징
- ‘git add’ 명령어로 스테이징해야 Git이 충돌이 해결되었음을 인식
- 여러 커밋을 가져왔을 경우, 충돌 해결 후 continue를 통해 다음 커밋 불러오기
Cherry-Pick 명령어
git cherry-pick --abort
//체리픽 이전의 상태로 되돌림
git cherry-pick --continue
//충돌 수정 후 체리픽을 마저 진행 할 때
git cherry-pick --skip
//체리픽을 강제로 skip함
//충돌이 발생했을 때나, 커밋을 적용 할 필요가 없을 때
'Frontend is 실전' 카테고리의 다른 글
[React] React-Query로 데이터 통신 해보기 (0) | 2025.01.10 |
---|---|
[Next] Next.js의 layout 적극 활용해 보기 (1) | 2024.12.03 |
[CSS] styled-components의 전역 스타일링 (0) | 2024.04.02 |
[API] 네이버 검색 API 사용하기 (0) | 2024.03.26 |
[AWS] AWS S3를 이용해 데이터 통신하기 (0) | 2024.03.14 |