라이프스타일

Git 2.56 출시: 해결된 충돌만 골라 스테이징하는 기능과 더 빨라진 병합 기준 탐색

GitHub 블로그는 2026년 9월 28일 오픈소스 Git 프로젝트가 Git 2.56.0을 출시했다고 전했다. 새 버전에는 병합 충돌을 정리할 때 무관한 변경이 실수로 섞이는 것을 막는 git add --resolved가 추가됐다. GitHub는 공통 조상 커밋 탐색이 빨라졌고, 대형 저장소 호스팅 업체가 저장 공간을 줄일 수 있는 path-walk repack의 걸림돌도 사라졌다고 설명했다.

읽는 데 약 8분

Git 2.56 출시: 해결된 충돌만 골라 스테이징하는 기능과 더 빨라진 병합 기준 탐색
사진: Mokaair (Original editorial artwork)

무슨 일이 있었나

GitHub 블로그는 2026년 9월 28일 Elijah Newren이 쓴 글을 게재하고 오픈소스 Git 프로젝트가 Git 2.56.0을 막 출시했다고 전했다. Git은 개발자들이 코드의 변경 이력을 관리하는 도구다. GitHub에 따르면 이번 버전에는 104명이 넘는 기여자의 기능 추가와 버그 수정이 담겼으며, 그중 39명은 새 기여자다. 글은 GitHub가 가장 주목할 만하다고 본 변경 사항을 골라 소개했다. 핵심은 더 안전한 충돌 스테이징 방식, 더 빠른 병합 기준 탐색, 그리고 서버 환경에 더 적합해진 path-walk repack이다.

3대 핵심 변경 사항

Git 2.56 출시: 해결된 충돌만 골라 스테이징하는 기능과 더 빨라진 병합 기준 탐색
Mokaair 편집 검증 절차 · 사진: Mokaair (Original editorial artwork)
자세한 설명 보기

출처를 수집하고 독립적으로 검증한 뒤 Jev가 판단합니다.

git add --resolved: 해결된 충돌만 스테이징

두 갈래의 작업을 합칠 때(병합) 같은 부분이 서로 다르게 고쳐져 있으면 충돌이 생긴다. Git은 해당 파일에 충돌 마커라는 표시를 남긴다. 사용자는 파일을 고친 뒤 '스테이징', 즉 다음 커밋에 담을 변경으로 표시해 충돌이 해결됐다고 Git에 알린다. GitHub 설명에 따르면 흔히 쓰는 git add -u는 수정된 추적 경로를 모두 갱신한다. 그래서 충돌과 무관한 로컬 수정까지 함께 스테이징하거나, 충돌 마커가 남은 파일까지 스테이징할 수 있다. Git 2.56에 새로 추가된 git add --resolved는 인덱스(다음 커밋을 준비하는 영역)에서 아직 병합되지 않은 경로만 대상으로 삼는다. 스테이징 전에는 해당 파일에 충돌 마커가 남아 있는지 검사한다. 마커가 발견되면 해당 경로를 나열하고 인덱스는 변경하지 않는다.

GitHub 글에 실린 git add --resolved 예시 · shell
$ git add --resolved
fatal: the following paths still have conflict markers: recipe.txt
$ # Edit recipe.txt and remove the conflict markers.
$ git add --resolved
$ git status --short
 M notes.txt
M  recipe.txt

위 예시에서 recipe.txt는 해결된 것으로 스테이징되고, 충돌과 무관한 notes.txt의 변경은 스테이징되지 않은 채 남는다. GitHub는 pathspec(대상 경로를 지정하는 조건)으로 범위를 제한할 수 있다고 덧붙였다. 다만 선택한 범위 안에서는 전부 아니면 전무 방식으로 검사한다. 해결된 삭제 충돌과 바이너리 충돌은 텍스트 마커가 없으므로 정상적으로 스테이징된다. git add -u나 git add -A와 함께 쓸 수 없으며, 충돌이 발생한 적 없는 추적 파일은 무시한다.

병합 기준 탐색을 일찍 멈출 수 있게 돼

병합 기준(merge base)은 두 커밋이 공유하는 가장 적절한 공통 조상 커밋이다. 병합, 점 세 개 diff, 호스팅 플랫폼의 풀 리퀘스트 비교는 모두 이 공통 조상을 찾아야 한다. GitHub에 따르면 기존 중단 규칙은 새로운 병합 기준이 더 나올 수 없게 된 뒤에도 오래된 히스토리를 대량으로 계속 처리할 수 있었다. Git 2.56은 탐색 대기열에서 아직 한쪽에서만 도달한 커밋 수를 추적한다. 어느 한쪽이 소진되면 탐색을 멈추면서도 모든 병합 기준은 그대로 반환한다.

path-walk repack을 비트맵 및 delta islands와 함께 사용 가능

repack은 저장소 안의 데이터를 다시 묶는 작업이다. 이때 비슷한 객체는 차이(델타)만 저장해 공간을 줄인다. GitHub에 따르면 path-walk repack은 트리 안의 파일 위치를 따라 객체를 순회하므로 더 나은 델타 관계를 찾아내는 경우가 많다. 호스팅 플랫폼은 reachability bitmap과 delta islands를 흔히 쓴다. 비트맵은 어떤 객체를 내보내야 하는지 빠르게 답하는 색인이다. delta islands는 한 참조 그룹의 객체가 다른 그룹에만 있는 객체에 의존하지 않게 막는 규칙이다. 이전에는 path-walk repack이 이 둘과 호환되지 않았는데, Git 2.56이 이 두 가지 제약을 없앴다. 다만 GitHub는 새 버전이 path-walk repack을 기본으로 켜지는 않았다고 강조했다. 대형 저장소 호스팅 업체가 저장 공간 절감 효과를 평가할 수 있게 했을 뿐이라는 설명이다.

GitHub가 공개한 성능 수치 비교

모노레포는 여러 프로젝트를 한곳에 모은 대형 저장소를 뜻한다. 수치는 모두 GitHub 블로그 글에 나온 것이며, 실제 효과는 저장소 구조에 따라 다르다.
시나리오변경 전Git 2.56 / 새 방식출처 설명
실제 모노레포 병합 기준 순회0.68초0.01초GitHub가 인용한 단일 사례
Linux 커널 git merge-base --all v4.8 v4.9167,441단계, 0.29초3,887단계, 0.01초기본 v2 commit-graph 사용
대형 모노레포 두 곳의 프로덕션 평가—한 곳은 여러 사례에서 약 70배, 다른 한 곳은 평균 약 20배 빨라짐GitHub가 밝힌 평가 결과
Fluent UI 저장소 repack 크기558.5MB(일반 비트맵 포함 repack)164.4MB(--path-walk)약 71% 감소, 델타 강제 재계산 벤치마크

그 밖에 주목할 새 명령

  • git history drop: GitHub에 따르면 실험적인 git history 명령은 Git 2.54에서 reword와 split으로 시작했고, Git 2.55에서 fixup이 추가됐다. Git 2.56에서는 drop이 추가됐다. drop은 선택한 커밋을 제거하고 그 뒤에 이어진 커밋들을 부모 커밋 위에 다시 적용한다. 다시 적용할 때 충돌이 나거나 로컬 수정을 덮어쓰게 되면 중단된다. 병합 커밋이 포함된 히스토리는 처리할 수 없고, 루트 커밋이나 병합 커밋도 제거할 수 없다.
  • git refs 도구: Git 2.56은 브랜치 같은 참조(ref)를 다루는 저수준 명령을 계속 git refs로 모으고 있으며, create, update, delete, rename이 포함된다. GitHub는 git refs rename이 참조와 그 변경 기록(reflog)을 옮기지만, git branch -m이 하는 브랜치 설정 조정은 하지 않는다고 지적했다.
  • git branch --delete-merged: GitHub는 작업이 이미 업스트림(원격 저장소)에 반영된 로컬 토픽 브랜치를 한꺼번에 정리하는 방법이 추가됐다고 밝혔다. 글의 예시에는 실제로 지우지 않고 결과만 미리 보여 주는 --dry-run 옵션이 함께 쓰였다.

일반 사용자에게 미치는 영향

매일 Git을 쓰는 개발자에게 가장 직접적인 변화는 git add --resolved다. 병합 시점에 이미 무관한 로컬 수정이 있다면 이 명령이 안전장치 역할을 한다. 끝나지 않은 충돌이나 무관한 변경을 실수로 함께 스테이징할 가능성이 줄어든다. 병합 기준 탐색 개선은 주로 히스토리가 방대하고 오래된 브랜치 병합이 많은 저장소에 영향을 준다. path-walk 관련 변경은 주로 저장소 호스팅 업체와 관련이 있다. 개발자가 아닌 사용자는 이러한 변경을 직접 접할 일이 대개 없지만, 이용하는 코드 호스팅 서비스가 향후 그 혜택을 볼 수 있다. 업그레이드 여부와 시기는 팀의 도구 체인과 호환성 요구에 따라 결정해야 한다.

자주 묻는 질문

Git 2.56은 언제 출시됐나요?

GitHub 블로그는 2026년 9월 28일 글에서 오픈소스 Git 프로젝트가 Git 2.56.0을 막 출시했다고 밝혔습니다.

git add --resolved와 git add -u는 무엇이 다른가요?

GitHub에 따르면 git add -u는 수정된 추적 파일을 모두 스테이징합니다. git add --resolved는 현재 병합되지 않은 충돌 경로만 처리하며, 충돌 마커가 남아 있으면 어떤 파일도 스테이징하지 않습니다. 두 옵션은 함께 쓸 수 없습니다.

새 버전이 저장소 크기를 자동으로 줄여 주나요?

아닙니다. GitHub는 Git 2.56이 path-walk repack을 기본으로 켜지 않았다고 밝혔습니다. 비트맵 및 delta islands와 호환되지 않던 제약을 없애 호스팅 업체가 평가할 수 있게 했을 뿐이라는 설명입니다.

git history drop을 실제 프로젝트에서 안심하고 써도 되나요?

GitHub는 git history가 아직 실험 단계라고 설명합니다. 병합 커밋이 포함된 히스토리는 처리할 수 없고, 루트 커밋이나 병합 커밋도 제거할 수 없습니다. 사용 전에 이러한 제약을 먼저 파악하는 것이 좋습니다.

이 성능 수치는 믿을 만한가요?

수치는 모두 GitHub 블로그 글에 나온 것으로, GitHub가 인용한 개별 사례와 벤치마크입니다. 실제 효과는 저장소에 따라 다릅니다.

이 주제의 최신 뉴스 보기

최신 여행 소식·가이드

출처

라이프스타일