일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- Hash-table
- 비동기
- CS
- javascript
- debounce
- RN업데이트
- React-Native업데이트
- axios
- react
- named type
- async
- promise.all
- private-access-to-photos
- Promise
- react-native-permissions
- hydration mismatch
- await
- react native
- RN아키텍쳐
- Throttle
- ios
- rn
- Swift
- motion.div
- animation
- no-permission-handler-detected
- react-native
- react-native-image-picker
- react animation
- RN새로운아키텍쳐
- Today
- Total
하루살이 개발일지
[Github] Merge와 Rebase의 개념 이해하기 본문
Rebase: git rebase는 한 브랜치의 변경 사항을 다른 브랜치 위에 '재배치(rebase)'하는 것입니다. 이는 커밋들의 베이스를 이동시키는 것을 의미합니다. 이 방법을 사용하면 여러 브랜치에 걸쳐 발생한 커밋들을 순서대로 하나의 선형적인 브랜치로 합칠 수 있습니다. 이렇게 하면 커밋 히스토리를 깨끗하게 유지할 수 있습니다. 하지만 이렇게 하면 기존의 커밋 이력이 변경되므로, 협업 중인 브랜치에서는 주의해서 사용해야 합니다.
Merge: git merge는 두 브랜치를 합치는 동작을 수행합니다. merge가 발생하면 Git은 두 브랜치의 공통 조상을 찾아, 이 브랜치들의 변경 사항을 모두 적용한 새로운 커밋(머지 커밋)을 만듭니다. 이 방법을 사용하면 커밋의 순서와 상관없이 두 브랜치의 변경 사항을 모두 포함할 수 있습니다. 그러나 이렇게 하면 여러 브랜치의 커밋들이 섞여서, 커밋 히스토리가 복잡해질 수 있습니다.
두 개의 차이점 : git merge와 git rebase는 Git에서 제공하는 두 가지 다른 브랜치 결합 방법입니다. 주요 차이점은 커밋 히스토리를 어떻게 다루는지에 있습니다.
**git merge**는 브랜치를 결합하는 가장 일반적인 방법입니다. 이를 사용하면 두 브랜치의 커밋 히스토리를 모두 유지하며, 두 브랜치의 변경 사항을 병합하는 새로운 "merge 커밋"을 생성합니다. 이 방법은 브랜치의 독립성을 유지하면서도 특정 시점에서의 변경 사항을 합칠 수 있어서, 대부분의 경우에 잘 작동합니다.
**git rebase**는 다른 접근 방식을 취합니다. rebase는 한 브랜치의 커밋들을 취하고, 이를 다른 브랜치 위에 "재배치(rebase)"합니다. 이렇게 하면 커밋 히스토리가 선형적으로 보이게 됩니다. 이 방법은 히스토리를 깨끗하게 유지할 수 있지만, 원래의 커밋 히스토리를 수정하는 것이므로, 협업하는 다른 사람들에게 혼란을 줄 수 있습니다.
그러므로, 어떤 방법을 사용할지는 상황에 따라 달라집니다:
- 여러 사람이 동일한 브랜치에 작업하고 있거나, 복잡한 브랜치 구조를 유지하려는 경우에는 merge를 사용하는 것이 좋습니다.
- 단일 개발자가 작업하거나, 깨끗하고 선형적인 히스토리를 선호하는 경우에는 rebase를 사용하는 것이 좋습니다. 그러나 이 방법은 커밋 히스토리를 변경하기 때문에, 공유 브랜치에는 주의해서 사용해야 합니다.
'Git > Github' 카테고리의 다른 글
github의 fatal 오류 (0) | 2023.06.23 |
---|---|
Github에는 기본 브랜치가 'main' 인데 VSCode에서는 'master' 인 이유 (0) | 2023.06.23 |
[Github] master -> main 브랜치 병합하기 (0) | 2023.06.18 |