|
1 | 1 | # git rebase |
2 | 2 |
|
| 3 | +## `git rebase develop` |
| 4 | +- `git rebase develop` 명령어는 현재 작업 중인 브랜치를 develop 브랜치의 최신 커밋 위에 다시 적용하는 명령어입니다. |
| 5 | + 즉, develop 브랜치의 변경 사항을 현재 브랜치에 반영하면서, |
| 6 | + 마치 현재 브랜치가 develop 브랜치에서 분기된 것처럼 커밋 기록을 정리하는 것입니다. |
| 7 | + |
| 8 | +- 예를 들어, feature/login 브랜치에서 작업 중이고, |
| 9 | + develop 브랜치의 최신 변경 사항을 반영하고 싶다면 아래와 같이 사용합니다. |
| 10 | + |
| 11 | +``` |
| 12 | +git checkout feature/login |
| 13 | +git rebase develop |
| 14 | +``` |
| 15 | + |
| 16 | +이렇게 하면 feature/login 브랜치의 커밋들은 **develop 브랜치의 최신 커밋 뒤에 붙게 됩니다.** |
| 17 | + |
3 | 18 | ## 설명 |
4 | | -- Rebase는 브랜치의 base를 다른 브랜치로 옮기는 Git 명령어입니다. |
5 | | -- 현재 브랜치의 커밋들을 잠시 보류하고, 목표 브랜치(이 경우, main)의 최신 커밋을 가져온 후, 보류했던 커밋들을 목표 브랜치 위에 다시 적용합니다. |
6 | | -- 결과적으로 현재 브랜치의 커밋 히스토리가 main 브랜치 위에 쌓이게 됩니다. |
| 19 | +- Rebase는 브랜치의 base(기준점)를 다른 브랜치로 옮기는 Git 명령어입니다. |
| 20 | +- 현재 브랜치의 커밋들을 잠시 보류하고, |
| 21 | + 목표 브랜치(develop)의 최신 커밋을 가져온 후, |
| 22 | + 보류했던 커밋들을 목표 브랜치 위에 다시 적용합니다. |
| 23 | +- 결과적으로 현재 브랜치의 커밋 히스토리가 목표 브랜치(develop) 브랜치 위에 쌓이게 됩니다. |
7 | 24 |
|
8 | 25 | ## 장점 |
9 | | -- 깔끔한 커밋 히스토리: main 브랜치와 현재 브랜치의 변경 사항을 선형적인 커밋 히스토리로 관리할 수 있습니다. |
10 | | -- 쉬운 병합: Rebase를 통해 main 브랜치와 현재 브랜치를 병합할 때 충돌 가능성을 줄일 수 있습니다. |
11 | | -- 의미 있는 커밋 기록 유지: Rebase를 통해 불필요한 병합 커밋 없이, 각 브랜치의 의미 있는 작업 내용을 명확하게 기록할 수 있습니다. |
| 26 | +- 깔끔한 커밋 히스토리: develop 브랜치와 현재 브랜치의 변경 사항을 선형적인 커밋 히스토리로 관리할 수 있습니다. |
| 27 | +- 쉬운 병합: Rebase를 통해 develop 브랜치와 현재 브랜치를 병합할 때 충돌 가능성을 줄일 수 있습니다. |
| 28 | +- 의미 있는 커밋 기록 유지: Rebase를 통해 불필요한 병합 커밋 없이, 각 브랜치의 의미 있는 작업 내용을 명확하게 기록할 수 있습니다. |
12 | 29 |
|
13 | 30 | ## 주의사항 |
14 | | -- Rebase는 로컬 저장소의 커밋 기록을 변경하므로, 이미 원격 저장소에 push된 커밋에 대해서는 Rebase를 진행하지 않는 것이 좋습니다. |
15 | | -- 만약 원격 저장소에 push된 커밋에 대해 Rebase를 진행해야 할 경우, git push --force 명령어를 사용하여 강제로 push해야 하지만, 이 경우 다른 협업 개발자들에게 문제가 발생할 수 있으므로 주의해야 합니다. |
16 | | -- Rebase 도중 충돌이 발생하면, 충돌을 해결하고 git rebase --continue 명령어를 사용하여 Rebase를 계속 진행해야 합니다. |
17 | | - |
18 | | -## 예시 |
19 | | -- git rebase branch main |
20 | | -- git rebase branch main 명령어는 현재 작업 중인 브랜치를 main 브랜치의 최신 커밋 위에 다시 적용하는 명령어입니다. 즉, main 브랜치의 변경 사항을 현재 브랜치에 반영하면서, 마치 현재 브랜치가 main 브랜치에서 분기된 것처럼 커밋 기록을 정리하는 것입니다. |
21 | | -- 만약 feature 브랜치에서 작업 중이고, main 브랜치의 최신 변경 사항을 반영하고 싶다면, git rebase main 명령어를 사용합니다. 이렇게 하면 feature 브랜치의 커밋들은 **main 브랜치의 최신 커밋 뒤에 붙게 됩니다.** |
22 | | - |
| 31 | +- Rebase는 로컬 저장소의 커밋 기록을 변경하므로, |
| 32 | + 이미 원격 저장소에 push된 커밋에 대해서는 Rebase를 진행하지 않는 것이 좋습니다. |
| 33 | +- 만약 원격 저장소에 push된 커밋에 대해 Rebase를 진행해야 할 경우, |
| 34 | + `git push --force` 명령어를 사용하여 강제로 push해야 하지만, |
| 35 | + 이 경우 다른 협업 개발자들에게 문제가 발생할 수 있으므로 주의해야 합니다. |
| 36 | + **강제 푸시 전에는 반드시 팀원과 충분히 소통하세요.** |
| 37 | +- Rebase 도중 충돌이 발생하면, |
| 38 | + 충돌을 해결하고 `git rebase --continue` 명령어를 사용하여 Rebase를 계속 진행해야 합니다. |
| 39 | + |
0 commit comments