commit-history

1 개의 포스트

What’s new in Git 2.54.0? (새 탭에서 열림)

Git 2.54.0 버전은 객체 데이터베이스(ODB)의 추상화를 통해 플러그 가능한 저장소 구조를 도입하고, 복잡한 대화형 리베이스를 대체할 직관적인 `git history` 명령어를 새롭게 선보였습니다. 이번 릴리스는 대규모 바이너리 처리나 플랫폼별 최적화 등 저장소 확장성을 확보하는 동시에, 개발자가 커밋 이력을 훨씬 쉽고 안전하게 관리할 수 있도록 사용자 경험을 대폭 개선하는 데 중점을 두었습니다. 약 2년에 걸친 내부 아키텍처 개편을 통해 Git은 더욱 현대적이고 유연한 도구로 진화하고 있습니다. ## 플러그 가능한 객체 데이터베이스 (Pluggable Object Databases) * 기존에 참조(refs) 저장 방식을 "files"와 "reftable"로 선택할 수 있었던 것처럼, 이제 객체(Objects) 저장 방식에도 추상화 계층이 도입되었습니다. * 그동안 Git 코드 곳곳에 하드코딩되어 있던 객체 저장 포맷(Loose objects, Packfiles) 가정을 제거하고, 다양한 백엔드를 수용할 수 있는 구조를 마련했습니다. * 현재는 커밋 생성, 그래프 표시, 병합 등 로컬 워크플로우의 상당 부분을 지원하며, 원격(Fetch, Push) 작업 지원을 위한 고도화 작업이 진행 중입니다. * 이러한 변화를 통해 향후 대용량 바이너리 파일을 효율적으로 저장하는 특수 포맷이나, GitLab과 같은 대규모 플랫폼에 최적화된 전용 스토리지 포맷을 도입하는 것이 가능해집니다. ## 커밋 이력 편집의 현대화와 git history 명령어 * 강력하지만 사용법이 복잡하고 난해했던 기존의 대화형 리베이스(`git rebase -i`)를 대체하기 위해 직관적인 `git history` 명령어가 추가되었습니다. * **git history reword**: 특정 커밋의 메시지를 즉시 수정할 수 있는 기능을 제공하여 사용자 편의성을 높였습니다. * **git history split**: 하나의 커밋을 두 개로 쪼개는 작업을 간편하게 수행할 수 있으며, 이는 최신 버전 관리 도구인 Jujutsu(`jj split`)의 영감을 받아 구현되었습니다. * 단순한 편집을 넘어, 수정된 커밋을 포함하고 있는 모든 로컬 브랜치를 자동으로 리베이스해주는 기능이 포함되어 있어 'Stacked Diffs(여러 개의 의존적 브랜치를 동시에 관리하는 방식)' 워크플로우를 강력하게 지원합니다. * 향후 `fixup`(수정 사항 자동 병합), `drop`(커밋 삭제), `reorder`(순서 변경), `squash`(커밋 합치기) 등 더 많은 서브 명령어가 추가될 예정입니다. ## 실용적인 결론 이번 업데이트는 Git의 내부 구조를 유연하게 재설계하여 미래의 저장 기술을 수용할 준비를 마쳤다는 점에서 큰 의의가 있습니다. 특히 `git history` 명령어는 리베이스 과정에서 실수를 두려워하던 사용자들에게 훨씬 안전하고 간결한 작업 방식을 제공하므로, 깔끔한 커밋 이력을 유지하고자 하는 개발자들에게 사용을 적극 권장합니다.