[Merge]
Fast-Forwarded Merge
새로운 branch A가 Main branch로부터 분기된 이후 Main branch에 새로운 커밋이 올라오지 않았다면, A가 최신 branch라고 할 수 있
다. 이 경우 A의 변경이력 그대로 Main으로 가져올 수 있다.
From https://github.com/insidedw/react-webpack5-ssr
27eb3af..3d95fe7 main -> origin/main
Updating 27eb3af..3d95fe7
Fast-forward
[Squash and Merge]
여러 개의 커밋을 하나로 합친 후 병합하는 방법입니다. 이 방식은 특히 협업 과정에서 여러 사람이 같은 기능을 개발하거나 버그를 수정할 때 유용합니다.
커밋 히스토리 정리: 여러 개의 커밋을 하나로 압축(squash)하여 병합하므로, Git 히스토리가 깔끔해집니다. 기능 개발이나 버그 수정 작업 중 발생한 자잘한 커밋들이 하나의 커밋으로 통합되기 때문에, 메인 브랜치의 히스토리가 간결하게 유지됩니다.
하나의 커밋 메시지: Squash and Merge를 수행할 때, 병합 대상이 되는 여러 커밋의 메시지를 조합하거나 하나로 수정할 수 있습니다. 이로 인해 해당 작업의 의도가 명확하게 기록됩니다.
브랜치 히스토리 보존: Squash and Merge는 브랜치를 병합하면서도 메인 브랜치의 히스토리를 깨끗하게 유지할 수 있어, 기능이나 버그 수정을 위해 임시로 만든 브랜치의 작업 내역을 하나의 커밋으로 요약합니다.
git merge --squash my-branch
[Rebase and Merge]
두 브랜치를 병합할 때 사용하는 방법 중 하나입니다. 이 방식은 병합하는 과정에서 커밋 히스토리를 재구성하여, 보다 깔끔하고 일관된 Git 히스토리를 유지할 수 있도록 합니다.
리베이스(Rebase): 리베이스는 커밋을 현재 브랜치의 기반(base)에서 다른 브랜치의 최신 커밋 위로 이동시키는 작업입니다. 즉, 브랜치의 히스토리를 다른 브랜치의 최신 상태로 재배치하는 것입니다. 이렇게 하면 두 브랜치의 커밋 히스토리가 직선으로 이어지게 되어, Git 로그가 보다 깔끔하게 정리됩니다.
충돌 해결: 리베이스 과정에서 충돌이 발생할 경우, 이를 수동으로 해결하고 다시 리베이스 과정을 이어나갑니다. 이로 인해 최종 병합 시점에는 충돌이 없는 상태로 병합됩니다.
병합 커밋 없음: Rebase and Merge를 사용하면 별도의 병합 커밋(merge commit)이 생성되지 않습니다. 이는 Git 히스토리가 더 단순해지고, 브랜치 간의 병합 흔적이 깔끔하게 정리된다는 것을 의미합니다.
브랜치 히스토리 재구성: 리베이스 과정에서 병합될 브랜치의 커밋들이 일렬로 재구성되기 때문에, 히스토리를 확인할 때 이해하기 쉬운 직관적인 형태로 유지됩니다.
git checkout -b test-branch
git rebase main
git checkout main
git merge test-branch
git push
'IT > git' 카테고리의 다른 글
[git] .env file 무시 설정 반영되지 않을 때 (2) | 2024.03.31 |
---|---|
Git - remote: Invalid username or password (0) | 2023.07.06 |
GIT - Revert (0) | 2023.06.19 |
GIT - pull 에러 잡기 (0) | 2023.06.18 |
GIT - pull, push, clone이 명령어로 안될 때 (0) | 2023.06.13 |