squash 3

GitHub PR Merge 옵션

Create a merge commit vs Squash and merge vs Rebase and mergeCreate a merge commit포크 (병렬 분기) 형태로 병합fast-forward merge 가 가능한 병합일지라도 GitHub 상에서는 해당 옵션 선택시 항상 포크 형태로 병합커밋 이력을 직선형으로 유지하고 싶다면 Rebase and merge 옵션을 선택해야 함하지만 Rebase and merge 옵션을 선택할 경우 커밋 해시는 변경됨커밋 이력 보존SHA 동일Squash and merge직선형으로 병합커밋 이력 손실SHA 변경Rebase and merge직선형으로 병합커밋 이력 보존SHA 변경

Dev/VCS 2025.05.12

Git 브랜치 관리

Git Flow 기반 워크플로에서의 브랜치 관리 방식develop:main 브랜치에 병합한 뒤에도 삭제하지 않는것이 일반적 (프로젝트의 지속적인 개발 흐름을 담당하는 브랜치이므로)main 브랜치로 병합 시 merge 방식이 일반적 (릴리즈 단위의 기록을 보존하려는 목적, 여러 feature 통합 흔적 유지)feature/*:develop 브랜치에 병합한 뒤 삭제하는 것이 일반적 (기능 개발이 완료되어 develop 에 반영되었기 때문에 더 이상 해당 브랜치가 필요 없음. GitHub, GitLab 등에서는 PR 을 머지할 때 자동으로 브랜치를 삭제하는 옵션도 있음)develop 브랜치로 병합 시 squash 또는 rebase 방식이 일반적 (커밋을 정리해서 develop 히스토리를 깔끔하게 유지하려는 목..

Dev/VCS 2025.04.25

Git rebase, squash

rebaserebase 는 브랜치의 분기 이후의 커밋들을 부모 브랜치의 최근 커밋 위로 재배치 해주는 작업입니다. rebase 를 진행하는 방식은 크게 두 가지가 있습니다. 아래와 같이 실행하면 develop 브랜치의 분기 이후의 커밋들을 main 브랜치의 최근 커밋 위로 재배치 해줍니다.git switch develop # develop 브랜치로 이동git rebase main # main 브랜치로 rebase 아래는 -i 옵션을 사용하여 리베이스 작업을 인터랙티브하게 진행하는 방식입니다. git rebase -i 명령어를 사용하면 단순히 git rebase 했을때와 다르게 리베이스 과정 중에 커밋을 수정, 삭제, 합치기 등 세부적으로 제어할 수 있습니다.git switch develop #..

Dev/VCS 2024.12.27