Git 2.54, 개발 효율을 높이는 새로운 기능들!
Git 2.54 릴리스를 통해 `git history` 명령어가 도입되어, 간단한 히스토리 수정 작업이 용이해짐
설정 파일 기반의 훅(Hook) 정의를 지원하여, 여러 저장소에서 훅을 공유하고 관리하는 방식이 개선됨
기하학적 리팩킹(Geometric Repacking) 전략이 기본으로 적용되어, 저장소 유지보수 효율성이 향상됨
`git add -p` 명령어의 사용성 개선을 통해, hunk 선택 과정의 편의성이 증대됨
`git history` 명령어: 히스토리 재작성의 간편화
Git 2.54는 `git history` 명령어를 도입하여, 히스토리 재작업의 편의성을 높였다. 특히, `reword` 및 `split` 기능을 통해, 간단한 커밋 메시지 수정이나 커밋 분할 작업을 보다 직관적으로 수행할 수 있게 되었다. 기존의 `git rebase -i`가 복잡했던 작업에 비해, `git history`는 작업 트리(Working Tree)나 인덱스(Index)를 변경하지 않고 히스토리 수정을 지원하여, 개발자의 작업 흐름을 방해하지 않는다.
설정 기반 훅(Hook) 도입: 훅 관리의 효율성 증대
Git 2.54는 설정 파일 기반의 훅 정의를 지원하여, 훅 관리의 효율성을 높였다. 이제 `.git/hooks` 디렉토리에 스크립트를 복사하는 대신, 설정 파일에 훅을 정의하여 여러 저장소에서 훅을 공유할 수 있다. 이는 린터(Linter)나 시크릿 스캐너(Secrets Scanner)와 같은 훅을 중앙에서 관리하고, 모든 저장소에 일관되게 적용하는 데 유용하다. 또한, 여러 훅을 동일한 이벤트에 대해 실행할 수 있도록 지원하여, 유연성을 높였다.
기하학적 리팩킹(Geometric Repacking) 기본 적용: 저장소 유지보수 자동화
Git 2.54에서는 기하학적 리팩킹(Geometric Repacking) 전략을 기본으로 채택하여, 저장소 유지보수 작업을 자동화했다. 이 전략은 저장소의 팩파일(Packfile)을 분석하여, 가능한 경우 부분적인 리팩(Repack)을 수행함으로써, 전체 가비지 컬렉션(Garbage Collection)을 수행하는 기존 방식보다 효율적이다. 이는 저장소의 크기가 커짐에 따라 유지보수 작업의 성능을 향상시키고, 개발자의 저장소 관리 부담을 줄이는 데 기여한다.
`git add -p` 개선: 인터랙티브 스테이징(Interactive Staging) 편의성 향상
Git 2.54는 `git add -p` 명령어의 사용성을 개선하여, 인터랙티브 스테이징 과정을 더욱 편리하게 만들었다. 특히, `J` 및 `K` 키를 사용하여 hunk를 탐색할 때, 각 hunk의 상태(수락/건너뛰기)를 시각적으로 표시하여, 사용자가 이전 결정을 쉽게 파악할 수 있도록 했다. 또한, `--no-auto-advance` 플래그를 통해, 파일 내 모든 hunk에 대한 결정을 내린 후에도 현재 파일에 머무를 수 있도록 하여, 사용자가 전체적인 변경 사항을 검토할 수 있도록 지원한다.