오픈 소스 Git 프로젝트는 2026년 9월 28일 Git 2.56.0을 출시했다. 39명의 신규 기여자를 포함해 104명이 넘는 사람이 기여했다. 이번 릴리스는 병합 오류의 위험을 줄이고 대규모 저장소와 코드 호스팅 서비스가 의존하는 작업을 가속화하는 데 초점을 맞춘다.
다른 변경 사항을 건드리지 않는 충돌 스테이징
Git 2.56은 충돌 상태였던 파일만 처리하는 git add --resolved 모드를 추가했다. git add -u 같은 명령과 달리 새로운 모드는 수정된 추적 파일을 모두 추가하려 하지 않으므로, 병합 작업과 관련 없는 로컬 변경 사항을 보호한다.
스테이징하기 전에 Git은 병합되지 않은 텍스트 파일에서 충돌 표시의 잔여물을 검사한다. 특정 파일에서 표시를 발견하면 작업의 일부만 스테이징하는 대신 인덱스를 변경하지 않은 상태로 둔다. pathspec을 사용해 작업 범위를 제한할 수 있으며, 삭제 및 바이너리 충돌은 텍스트 표시를 포함하지 않으므로 정상적으로 처리된다.
병합 기준 찾기 가속화
이번 릴리스는 커밋 사이에서 가장 적합한 공통 조상을 찾는 알고리즘을 개선했다. 이 작업은 병합, 3점 차이 비교, 풀 리퀘스트 비교에서 사용된다. 검색 큐에서 한쪽의 독점 항목이 소진되면 더 이상 새로운 병합 기준이 나타날 수 없으므로 Git은 이 시점에 중단한다.
대규모 모노레포 상태에서 변경 후 작업 시간이 0.68초에서 0.01초로 줄었으며, 두 대규모 저장소의 생산성 평가에서는 한 저장소에서 약 70배, 다른 저장소에서 평균 약 20배의 개선이 기록됐다. 또한 Linux 커널과 관련된 경우 git merge-base --all v4.8 v4.9 작업은 167,441단계와 0.29초에서 3,887단계와 0.01초로 감소했다.
호스팅 서비스를 위한 더 작은 재패키징
Git 2.56은 경로 기반 재패키징의 사용을 가로막던 두 가지 장애물을 제거했다. 경로 기반 재패키징은 저장소 트리에서 서로 가까운 파일 객체를 함께 묶어 압축을 개선하는 기술이다. Fluent UI 저장소 복사본을 대상으로 한 테스트에서 저장 패키지 크기는 기존 재패키징을 사용했을 때 558.5MB에서 --path-walk를 사용했을 때 164.4MB로 줄어 약 71% 감소했다.
이 방식은 이제 도달 가능성 맵과 차이 집합을 지원하므로, 호스팅 서비스가 기존 서비스 및 격리 메커니즘을 유지하면서 저장 공간 절감 효과를 평가할 수 있다. 그러나 기본적으로 활성화되지는 않으며 모든 저장소에 자동으로 적용되는 전환도 아니다.
추가 도구와 실용적인 개선 사항
- 실험적 명령인 git history drop은 커밋을 삭제하고 그 이후의 커밋을 다시 적용한다. 다만 충돌, 루트 커밋, 병합 작업과 관련된 제한은 계속 적용된다.
- git refs 명령은 참조 생성, 업데이트, 삭제 및 이름 변경 작업을 통합하며, 이전 값을 통한 compare-and-swap 보호를 지원한다.
- git branch --delete-merged는 추적 브랜치를 기준으로 병합된 브랜치를 대량 삭제할 수 있으며, 미리 보기 옵션과 지정된 브랜치 보호 기능을 제공한다.
- git bisect run --reset-when-found는 장애를 일으킨 커밋을 찾은 뒤 상태를 자동으로 재설정한다.
- git repack 명령은 부분 복사본에서 복원된 대형 바이너리 객체를 수동으로 제거할 수 있으며, 필요할 때 신뢰할 수 있는 서버에서 다시 가져올 수 있는 상태로 유지한다.
- git log --follow는 비선형 기록에서 경로 이름 변경 추적을 개선하며, 여러 루트를 가진 그래프 표시도 개선한다.
이 릴리스가 중요한 이유
Git 2.56의 실질적인 가치는 새로운 명령에만 있지 않다. 이번 릴리스는 개발자와 저장소 관리자의 작업에서 직접 발생하는 마찰 지점을 해결한다. git add --resolved 모드는 의도하지 않은 변경 사항이 포함될 가능성을 줄이며, 병합 기준과 재패키징 개선은 대규모 저장소의 시간 및 저장 공간 비용을 겨냥한다. 그러나 일부 도구는 여전히 실험적이거나 수동으로 사용해야 하며, 특히 기록 관리 명령과 부분 복사본의 객체 정리 명령은 자동 정책이나 기존 작업 흐름을 무조건 대체하는 수단으로 취급해서는 안 된다.
이번 릴리스는 Git 프로젝트가 최종 사용자용 명령을 추가하는 데 그치지 않고 알고리즘과 내부 구조 수준에서도 성능을 계속 개선하고 있음을 보여준다. 릴리스 세부 사항에서는 실험적 기능을 운영 환경에 도입하기 전에 나머지 변경 사항을 검토할 수 있도록 Git 2.56 전체 릴리스 노트를 참조할 것을 권장한다.