
feature)를 현재 브랜치(예: main)에 병합하며, 병합 커밋(merge commit) 생성| 기능 | git merge | git rebase |
|---|---|---|
| 커밋 히스토리 | 기존 커밋을 유지하며 새로운 병합 커밋(merge commit)을 생성 | 기존 커밋을 재배치하여 히스토리를 깔끔하게 정리 |
| 커밋 ID | 원본 커밋 ID 유지 | 재배치 과정에서 새로운 해시 ID 부여 |
| 히스토리 가독성 | 여러 브랜치가 합쳐지면서 복잡해질 수 있음 | 마치 한 줄기에서 작업한 것처럼 정리됨 |
| 충돌 발생 시점 | 병합 시점 | 재배치 시점 |
| 대표적인 사용 상황 | 협업 프로젝트에서 명확한 변경 이력을 남길 때 | 로컬 브랜치에서 깔끔한 커밋 정리가 필요할 때 |
git mergemerge를 사용하면 좋음.git log를 보며 변경 사항을 추적하기 쉬움. 여러 개발자가 작업한 기록을 그대로 남기므로, 누가 어떤 변경을 했는지 명확하게 확인할 수 있다.git rebasefetch upstream으로 최신 정보를 가져온 뒤 rebase를 실행하면, 마치 원래부터 최신 상태에서 작업한 것처럼 정리됨. 원본 저장소의 최신 변경 사항을 내 로컬 작업에 깔끔하게 반영master 브랜치의 최신 상태로 업데이트하고 싶다면, rebase를 사용하여 마치 한 줄기에서 개발한 것처럼 만들 수 있음.main/master 브랜치에서 직접 rebase 피하기feature 브랜치에서만 rebase를 수행하고, master에서는 merge를 사용하는 것이 일반적임.git merge가 기본! (git log에서 히스토리를 추적하기 좋음)git rebase를 활용하여 깔끔한 커밋 히스토리 유지!rebase가 유용!rebase하는 것은 피해야 함. (충돌 가능성 높음)upstream은 내가 작업하는 저장소보다 상위에 있는 원격 저장소를 의미하며, 보통 프로젝트의 원본 저장소이다.fork해온 원본 저장소 = upstreamclone해서 작업하는 개인 원격 저장소 = origingit merge)하거나 검토할 수 있다.git fetch + git merge를 한 번에 실행하는 명령어git fetchgit diff origin/main과 같은 명령어를 사용하여 어떤 변경 사항이 있는지 확인한 후, 안전하게 병합할 수 있음.git pull