Git 2.55.0의 주요 신기능을 다룬다. git history fixup 명령으로 스택 워크플로우에서 fixup 커밋과 인터랙티브 리베이스를 단일 명령으로 통합하고, Linux fsmonitor 데몬 지원으로 대형 모노레포의 git-status 성능을 높인다. Rust가 2.55부터 빌드 의존성으로 공식화됐다.
핵심 포인트- git history fixup <commit-id> 명령이 staged 변경사항을 기존 커밋에 자동 병합하고 관련 브랜치까지 업데이트해, fixup 커밋 생성+인터랙티브 리베이스 두 단계를 대체한다.
- Linux inotify(7) 기반 fsmonitor 데몬이 추가돼 대형 모노레포에서 git-status 속도를 파일 시스템 변경 캐싱으로 향상시킨다.
- git push forks main으로 여러 리모트에 동시 push가 가능해졌다(이전에는 fetch만 지원).
- --graph-lane-limit=<n> 옵션으로 ASCII 커밋 그래프 너비를 제한해 터미널에서의 가독성을 확보한다.
- Rust 컴파일러 지원이 2.55부터 기본 의무화됐다(비활성화 옵션: Meson의 경우 meson configure -Drust=disabled, Makefile의 경우 NO_RUST=YesPlease).
상세 정리- git history fixup: Patrick Steinhardt 구현. 기존 워크플로우인 fixup 커밋 생성→git rebase -i 두 단계를 단일 명령으로 통합. 스택 브랜치 워크플로우에서 관련 브랜치도 자동 업데이트.
- Linux fsmonitor: inotify(7) 시스템 콜을 사용해 파일 시스템 변경을 캐싱. Windows/macOS 구현에 이어 Linux까지 완성. 대형 디렉터리가 많은 저장소는 fs.inotify.max_user_watches 한계를 초과할 수 있다는 주의사항이 있다.
- Remote Group Push: remote.<name>.push 매핑과 미러 설정을 각 리모트별로 존중하며 동시 push. git-fetch와 동일한 그룹 기능이 push에도 추가됨.
- 그래프 레인 제한: --graph-lane-limit=<n> 옵션이 초과 레인을 ~ 마커로 대체해 터미널 폭 초과 시 가독성 보존.
- Rust 의무화: 2.49부터 점진적 도입, 2.55에서 기본 의무화. 비활성화는 Meson(meson configure -Drust=disabled) 또는 Makefile(make NO_RUST=YesPlease).
- Partial Clone 성능: git-grep와 git-cherry가 partial clone에서 blob 다운로드를 배치 처리해 서버 왕복 횟수를 줄임.
왜 읽나대형 모노레포 운영이나 스택 브랜치 워크플로우를 사용하는 개발자에게 Git 2.55.0의 성능/UX 개선을 실용적으로 정리한 글.